PHP में OOP में पैरेंट मेथड्स को ओवरराइड करना
एक चाइल्ड क्लास अपने पैरेंट की मेथड को उसी नाम की मेथड बनाकर ओवरराइड कर सकती है। आइए एक उदाहरण देखें। मान लीजिए कि हमारे पास निम्नलिखित पैरेंट क्लास है:
<?php
class User {
private $name;
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
?>
आइए चाइल्ड क्लास में उसी नाम की एक मेथड बनाएं:
<?php
class Student extends User {
public function setName($name) {
}
}
?>
आमतौर पर, पैरेंट मेथड्स को ओवरराइड करने की आवश्यकता तब होती है जब हम उस मेथड के व्यवहार को बदलना या उसमें कुछ जोड़ना चाहते हैं। आइए हमारे मामले में नाम की लंबाई की जांच जोड़ें:
<?php
class Student extends User {
public function setName($name) {
if (strlen($name) > 0) {
$this->name = $name;
} else {
echo 'student name error';
}
}
}
?>
आइए सुनिश्चित करें कि वास्तव में ओवरराइड की गई मेथड ही कॉल हो रही है। सबसे पहले, चाइल्ड क्लास की एक ऑब्जेक्ट बनाएं:
<?php
$student = new Student;
?>
अब हमारी मेथड को कॉल करें, इसमें एक वैध मान पास करके:
<?php
$student->setName('john');
?>
और अब मेथड को कॉल करें, इसमें एक अवैध मान पास करके। परिणामस्वरूप हमें एक त्रुटि दिखाई देगी:
<?php
$student->setName(''); // त्रुटि
?>
User क्लास में आयु के लिए
गेटर और सेटर बनाएं।
Employee क्लास में आयु के सेटर को
ओवरराइड करें और इसमें यह जांच बनाएं
कि आयु 18 से 65 वर्ष के बीच हो।