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 / Base Class , जिस class के द्वारा extend किया गया है उसे Child / Derived Class कहते हैं। Extend करने पर Child Class में लगभग बो सभी properties / methods होंगे जो Parent Class में हैं, हालाँकि यह Parent Class के Access Specifiers पर depend करता है कि बो Properties Accessible हैं या नहीं ।
C++ में किसी class को inherit करने के लिए colon ( : ) का use किया जाता है।
C+ मुख्य रूप से 4 Types की Inheritance को support करती है -
Inheritance का यह सबसे easy way है , जिसमे किसी single class को किसी single class के द्वारा Inherit किया जाता है।
#include <iostream>
using namespace std;
// define class.
class A{
// define a property as protected so that we can access it's child class.
protected :
string property_a = "Class A Property";
// define a public method.
public :
void test(){
cout << "\ntest method in class A";
}
};
// define another class that inherits A class.
class B : public A{
// we can access Class A's property_a only inside class.
public :
B(){
cout << property_a;
}
};
int main() {
// just create class B object.
B bObj;
// call class A method on class B Object.
bObj.test();
return 0;
}
Class A Property test method in class A
Explain : ऊपर दिए गए example में Class A को class B द्वारा inherit किया गया है , और आप clearly देख सकते हैं कि class A की सभी protected / public properties / methods को B class से भी access किया जा सकता है।
Base / Parent class की सभी public properties / methods को publically (class के बाहर) access करने के लिए आपको inherit करते समय colon : के बाद public use करना पड़ेगा , जैसे कि ऊपर दोनों examples में दिखाया गया है। बिना public use किये inherit करके parent class की public properties को access करने पर कुछ ऐसी error आती है।
For Example , ऊपर दिए गए example में A class extend करते समय अगर public न लगाएं तो कुछ इस तरह से error आएगी।
class B : A{ // block of code } In function 'int main()': 31:13: error: 'void A::test()' is inaccessible within this context 31 | bObj.test(); | 31:13: error: 'A' is not an accessible base of 'B' 31 | bObj.test();
? Inheritance में Child Class के द्वारा Parent Class की सिर्फ public & protected Properties / Methods को access किया जा सकता है , private नहीं। By default Class की सभी Properties / Methods private होते हैं।
जब भी किसी class को inherit करके child / derived class का object बनाते हैं , तो सभी parent / base classes का constructor automatically run हो जाता है। लेकिन उसके लिए सभी parent classes में constructor public define होना चाहिए।
Example :
#include <iostream>
using namespace std;
// define class.
class A{
// define constructor.
public :
A(){
cout << "Class A constructor \n";
}
};
class B : public A{
// define constructor for class B.
public :
B(){
cout << "Class B constrcutor";
}
};
int main() {
// just create class B object.
B bObj;
return 0;
}
Class A constructor Class B constrcutor
यह भी normal inheritance ही है, इस type के Inheritance में किसी single class को एक से ज्यादा Classes के द्वारा Inherit किया जाता है।
#include <iostream>
using namespace std;
// define class.
class A{
// define a public method.
public :
void test(){
cout << "test method in class A. \n";
}
};
// define class B that inherits class A.
class B : public A{
};
// define another class that also inherits A.
class C : public A{
};
int main() {
/*
* Now class B,C both have the A class methos test.
*/
B bObj;
C cObj;
cObj.test();
bObj.test();
return 0;
}
test method in class A. test method in class A.