If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
किसी class को या Class की properties / behavior को extend करना Inheritance
कहते हैं। जिस class को extend किया गया है उसे Parent
or Super
class, जिस class के द्वारा extend किया गया है उसे Child
class कहते हैं।
Extend करने पर Child class में लगभग बो सभी properties / methods होंगे जो Parent Class में हैं, हालाँकि यह Parent Class के access modifiers पर depend करता है कि बो Properties Accessible
हैं या नहीं ।
PHP में किसी class को inherit करने के लिए extend
keyword का use किया जाता है।
PHP मुख्य रूप से 3 Types की Inheritance को support करती है -
Single Inheritance
Multilevel Inheritance
Hierarchical Inheritance
●●●
Inheritance का यह सबसे easy way है , जिसमे किसी single class को किसी single class के द्वारा Inherit
किया जाता है।
Example :
<?php
class A
{
function methodA()
{
echo 'Class A methodA';
}
}
class B extends A
{
function methodB()
{
echo 'Class B methodB';
}
}
$obj = new B();
$obj->methodA();
echo '<br>'; /*For line break*/
$obj->methodB();
?>
Output
Class A methodA Class B methodB
Inheritance में Child Class के द्वारा Parent Class की सिर्फ public & protected Properties / Methods को access किया जा सकता है , private नहीं। By default Class की सभी Properties / Methods public होते हैं।
●●●
multilevel inheritance में किसी Class को दूसरी class के द्वारा inherit
किया जाता है और फिर उस class को किसी तीसरी class के द्वारा inherit किया जाता है।
Example
<?php
class A
{
function methodA()
{
echo 'Class A methodA';
}
}
class B extends A
{
function methodB()
{
echo 'Class B methodB';
}
}
class C extends B
{
function methodC()
{
echo 'Class C methodC';
}
}
$obj = new C();
$obj->methodA();
echo '<br>';
$obj->methodB();
echo '<br>';
$obj->methodC();
?>
Output
Class A methodA Class B methodB Class C methodC
●●●
इस type के Inheritance में किसी single
class को एक से ज्यादा Classes के द्वारा Inherit किया जाता है।
Example
<?php
class A
{
function methodA()
{
echo 'Class A methodA';
}
}
class B extends A
{
function methodB()
{
echo 'Class B methodB';
}
}
class C extends A
{
function methodC()
{
echo 'Class C methodC';
}
}
$obj = new C();
$obj->methodA();
echo '<br>';
$obj->methodC();
/*now initialize one more Object for class B*/
echo '<br>';
$newObj = new B();
$newObj->methodA();
?>
Output
Class A methodA Class C methodC Class A methodA
ऊपर दिए गए Example में Class A
को दो classes B
,C
द्वारा inherit किया गया है।
●●●
जिस तरह से class के अंदर उस class की Properties / Methods को access करने के लिए $this
& self
use किये जाते हैं, उसी तरह से Inheritance में Parent
class की Properties / Methods को access करने के लिए parent
keyword का use किया जाता है।
हालाँकि यह जरूरी नहीं है कि Parent Class की Properties / Methods को access करने के लिए parent keyword का ही use करें , $this & self का use भी कर सकते हैं , क्योंकि जब class को Inherit किया जाता है तो सभी public , protected Properties / Methods child class में bind हो जाते हैं। लेकिन parent का use करने से code complexity कम हो जाती है, जिससे समझने में आसानी होती है।
Parent Class में आप constructor & destructor define कर सकते हैं , जब child class का Object बनता है तो ये automatically run होते हैं। हालाँकि अगर Parent
Class को extend करने वाली child class में भी constructor & destructor define हैं तो Parent
Class में defined constructor & destructor run नहीं होंगे।
parent class के constructor & destructor run करने के लिए parent::__construct()
और parent::__destruct()
का use किया जाता है।
<?php
class Animal
{
function __construct()
{
echo "Animal's class constructor";
}
function __destruct()
{
echo "Animal's class destructor";
}
}
class Dog extends Animal
{
function __construct()
{
/*calling parent class constructor*/
parent::__construct();
echo "Dog's class constructor";
}
function __destruct()
{
/*calling parent class destructor*/
parent::__destruct();
echo "Dog's class destructor";
}
public function bark()
{
echo 'Dogs bark';
}
}
$obj = new Dog();
$obj->bark();
?>
Output
Animal's class constructor Dog's class constructor Dogs bark Animal's clas s destructor Dog's class destructor
हालाँकि parent::__construct()
और parent::__destruct()
को आप अपनी need के according आगे - पीछे भी call कर सकते हैं।