PHP में OOP इनहेरिटेंस के दौरान कंस्ट्रक्टर
इनहेरिटेंस के दौरान पैरेंट के कंस्ट्रक्टर को ओवरराइड किया जा सकता है। आइए एक उदाहरण से देखते हैं। मान लीजिए कि हमारे पास निम्नलिखित पैरेंट क्लास है:
<?php
class User {
private $name;
private $surn;
public function __construct($name, $surn) {
$this->name = $name;
$this->surn = $surn;
}
public function getName() {
return $this->name;
}
public function getSurn() {
return $this->surn;
}
}
?>
मान लीजिए कि पैरेंट क्लास से निम्नलिखित क्लास इनहेरिट करती है:
<?php
class Student extends User {
}
?>
मान लीजिए कि हम चाइल्ड क्लास में कंस्ट्रक्टर को एक्सटेंड करना चाहते हैं, इसमें अतिरिक्त पैरामीटर जोड़कर:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
}
}
?>
इस स्थिति में हमें अनिवार्य रूप से
पहली लाइन में parent::__construct() के माध्यम से
पैरेंट के कंस्ट्रक्टर को कॉल करना होगा:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
कमांड parent::__construct() असल में
पैरेंट का कंस्ट्रक्टर है। इसलिए
इसमें आवश्यक पैरामीटर पास करते हैं:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
}
}
?>
अब चाइल्ड में वर्ष को चाइल्ड की अपनी प्रॉपर्टी में लिखते हैं:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
}
?>
आइए वर्ष के लिए एक गेटर बनाते हैं:
<?php
class Student extends User {
private $year;
public function __construct($name, $surn, $year) {
parent::__construct($name, $surn);
$this->year = $year;
}
public function getYear() {
return $this->year;
}
}
?>
मान लीजिए कि क्लास Employee इस पाठ की
क्लास User से इनहेरिट करती है।
क्लास Employee में पैरेंट के कंस्ट्रक्टर को
ओवरराइड करें, इसमें उम्र और वेतन
का पैरामीटर जोड़कर।
उम्र और वेतन के लिए गेटर बनाएं।