चाइल्ड क्लास में पैरेंट कंस्ट्रक्टर मेथड को कॉल करते समय हम दो मामलों का सामना करेंगे।
केस 1
यदि चाइल्ड क्लास एक कंस्ट्रक्टर परिभाषित करती है तो हम पैरेंट क्लास कंस्ट्रक्टर को चाइल्ड क्लास में सीधे नहीं चला सकते। पैरेंट कंस्ट्रक्टर चलाने के लिए, चाइल्ड कंस्ट्रक्टर के भीतर parent::__construct() का कॉल आवश्यक है।
उदाहरण
<?php
class grandpa{
public function __construct(){
echo "I am in Tutorials Point"."\n";
}
}
class papa extends grandpa{
public function __construct(){
parent::__construct();
echo "I am not in Tutorials Point";
}
}
$obj = new papa();
?>
Output: I am in Tutorials Point I am not in Tutorials Point
व्याख्या
उपरोक्त उदाहरण में, हमने पैरेंट क्लास कंस्ट्रक्टर को कॉल करने के लिए parent::__construct() का उपयोग किया है।
केस 2
यदि चाइल्ड कंस्ट्रक्टर परिभाषित नहीं करता है तो यह पैरेंट क्लास से ठीक एक सामान्य क्लास मेथड की तरह इनहेरिट हो सकता है (यदि इसे प्राइवेट के रूप में घोषित नहीं किया गया था)।
उदाहरण
<?php
class grandpa{
public function __construct(){
echo "I am in Tutorials point";
}
}
class papa extends grandpa{
}
$obj = new papa();
?>
आउटपुट
I am in Tutorials point
व्याख्या
यहां पैरेंट क्लास को निहित रूप से कॉल किया जाता है क्योंकि चाइल्ड क्लास में हमने चाइल्ड क्लास में कोई कंस्ट्रक्टर फंक्शन घोषित नहीं किया है।