PHP में OOP में पैरेंट मेथड्स को ओवरराइड करना

एक चाइल्ड क्लास अपने पैरेंट की मेथड को उसी नाम की मेथड बनाकर ओवरराइड कर सकती है। आइए एक उदाहरण देखें। मान लीजिए कि हमारे पास निम्नलिखित पैरेंट क्लास है:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

आइए चाइल्ड क्लास में उसी नाम की एक मेथड बनाएं:

php<?php
  class Student extends User {
    public function setName($name) {
      
    }
  }
?>

आमतौर पर, पैरेंट मेथड्स को ओवरराइड करने की आवश्यकता तब होती है जब हम उस मेथड के व्यवहार को बदलना या उसमें कुछ जोड़ना चाहते हैं। आइए हमारे मामले में नाम की लंबाई की जांच जोड़ें:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

आइए सुनिश्चित करें कि वास्तव में ओवरराइड की गई मेथड ही कॉल हो रही है। सबसे पहले, चाइल्ड क्लास की एक ऑब्जेक्ट बनाएं:

php<?php
  $student = new Student;
?>

अब हमारी मेथड को कॉल करें, इसमें एक वैध मान पास करके:

php<?php
  $student->setName('john');
?>

और अब मेथड को कॉल करें, इसमें एक अवैध मान पास करके। परिणामस्वरूप हमें एक त्रुटि दिखाई देगी:

php<?php
  $student->setName(''); // त्रुटि
?>
Задание 1

User क्लास में आयु के लिए गेटर और सेटर बनाएं।

Задание 2

Employee क्लास में आयु के सेटर को ओवरराइड करें और इसमें यह जांच बनाएं कि आयु 18 से 65 वर्ष के बीच हो।