Introduction for Inheritance
OOP में Inheritance ये बहुत ही महत्वपूर्ण हिस्सा है | Inheritance में दो प्रकार के के classes होते है |
- Base Class : Base class को 'parent या super class' भी कहा जाता है | Base class में data members और member functions होते है |
- Derived Class : Derived class को 'child या sub class' भी कहा जाता है |
Derived class; Base class की properties को inherit करता है |


Inheritance के पांच प्रकार है |
- Single Inheritance
- Multilevel Inheritance
- Multiple Inheritance
- Hierarchical Inheritance
- Hybrid Inheritance
Syntax for Inheritance
class Derived_Class : Access_Specifier Base_Class
1. Single Inheritance
Single Inheritance ये Inheritance का सबसे पहला और आसान प्रकार है |
Single Inheritance में एक Base Class की properties एक derived class को inherit की जाती है |
Syntax for Single Inheritance
class Base_class_Name { // body_of_Base_class }; class Derived_class_Name : Access_Specifier Base_class_Name { //body_of_Derived_class };


जब member functions class के अन्दर declare किये जाते है, तब Syntax
return_type Member_function(){ some_code; }
जब member functions class के बाहर declare किये जाते है, तब Syntax
return type class_name :: member_function(){ some_code; }
निचे दिए हुए program में member functions को class के अन्दर declare किया गया है |
Example for Single Inheritance
Source Code :Output:#include <iostream.h> using namespace std; class Employee{ int emp_id; char emp_name[20]; int emp_salary; public: void getdata(){ cout<<"Enter Employee id : "; cin>>emp_id; cout<<"Enter Employee name : "; cin>>emp_name; cout<<"Enter Employee salary : "; cin>>emp_salary; } void putdata(){ cout<<"Employee id : "<<emp_id<<endl; cout<<"Employee name : "<<emp_name<<endl; cout<<"Employee salary : "<<emp_salary<<endl; } }; class fitness : public Employee { float height,weight; public: void accept(){ cout<<"Enter Height in feet: "; cin>>height; cout<<"Enter Weight in kg: "; cin>>weight; } void display(){ cout<<"Employee Height is "<<height<<" feet"<<endl; cout<<"Employee Weight is "<<weight<<" kg"<<endl; } }; int main(){ fitness F; cout<<" Enter Employee details"<<endl; F.getdata(); F.accept(); cout<<"Employee details are"<<endl; F.putdata(); F.display(); return 0; }
Enter Employee details Enter Employee id : 5 Enter Employee name : Rakesh Enter Employee salary : 20000 Enter Height in feet: 5.9 Enter Weight in kg: 65 Employee details are Employee id : 5 Employee name : Rakesh Employee salary : 20000 Employee Height is 5.9 feet Employee Weight is 65 kg
2. Multilevel Inheritance
Multilevel Inheritance; Inheritance का दूसरा प्रकार है |
Multilevel Inheritance में एक base class और दो derived class होते है |
Multilevel Inheritance में derived class का base class होता है और derived class का भी derived class होता है |
Syntax for Multilevel Inheritance
class Base_class_Name { // body_of_Base_class }; class Derived_class_Name1 : Access_Specifier Base_class_Name { //body_of_Derived_class1 }; class Derived_class_Name2 : Access_Specifier Derived_class_Name1 { //body_of_Derived_class2 };


Source Code:
Output:#include <iostream.h> using namespace std; class base_class{ public: void show(){ cout << "I am a Base Class."<<endl; } }; class derived_class1 : public base_class{ public: void get(){ cout << "I am a Derived Class1."<<endl; } }; class derived_class2 : public derived_class1{ public: void display(){ cout << "I am a Derived Class2."<<endl; } }; int main(){ derived_class2 d; // Access all data from derived_class2 d.show(); d.get(); d.display(); return 0; }
I am a Base Class. I am a Derived Class1. I am a Derived Class2.
3. Multiple Inheritance
Multiple Inheritance ये Inheritance का तीसरा प्रकार है |
Multiple Inheritance में एक से अधिक base classes हो सकते है और एक derived class होता है |
Derived class को दो या दो से ज्यादा base classes को inherit किया जाता है, उसे Multiple Inheritance कहते है |
Syntax for Multiple Inheritance
class Base_class_Name1 { // body_of_Base_class }; class Base_class_Name2 { //body_of_Base_class2 }; class Derived_class_Name : Access_Specifier Base_class_Name1, Access_Specifier Base_cass_Name2,....... { //body_of_Derived_class2 };


Source Code :
Output :#include <iostream.h> using namespace std; class A{ public: display1(){ cout<<"Class A"<<endl; } }; class B{ public: display2(){ cout <<"Class B"<<endl; } }; class C: public B, public A{ public: display3(){ cout <<"Class C"<<endl; } }; int main(){ C obj; obj.display1(); obj.display2(); obj.display3(); return 0; }
Class A Class B Class C
4. Hierarchical Inheritance
Hierarchical Inheritance ये Inheritance का चौथा प्रकार है |
Hierarchical Inheritance में एक base class और एक से अधिक derived classes होते है |
Syntax for Hierarchical Inheritance
class Base_classname { //body_of_Base_class }; class derived_class_Name1 : Access_Specifier Base_class_Name { //body_of_derived_class1 }; class derived_class_Name2 : Access_Specifier Base_class_Name { //body_of_derived_class2 };


Source Code :
#include <iostream.h> using namespace std; class A{ public: display1(){ cout<<"Class A"<<endl; } }; class B : public A{ public: display2(){ cout <<"Class B"<<endl; } }; class C : public A{ public: display3(){ cout <<"Class C"<<endl; } }; int main(){ B b; C c; c.display1(); b.display2(); c.display3(); return 0; }Output:
Class A Class B Class C
5. Hybrid Inheritance
Hybrid Inheritance ये Inheritance का पांचवा और आखिरी प्रकार है | इसे 'Virtual Inheritance' भी कहा जाता है |
Hybrid Inheritance; एक से ज्यादा inheritance का combination है |
Syntax for Hybrid Inheritance(Multilevel, Multiple)
class base_class_Name { //body_of_Base_class }; class derived_class_Name1 : Access_Specifier base_class_Name { //body_of_derived_class1 }; class derived_class_Name2 { //body_of_derived_class2 }; class derived_class_Name3 : class derived_class_Name1, class derived_class_Name2 { //body_of_derived_class3 };


Source Code :
Output:#include <iostream.h> using namespace std; class A{ public: display1(){ cout<<"Class A"<<endl; } }; class B : public A{ public: display2(){ cout <<"Class B"<<endl; } }; class C{ public: display3(){ cout <<"Class C"<<endl; } }; class D : public C, public B{ public: display4(){ cout <<"Class D"<<endl; } }; int main(){ D obj; obj.display1(); obj.display2(); obj.display3(); obj.display4(); return 0; }
Class A Class B Class C Class D
Hybrid Inheritance using Virtual Function
Syntax for Hybrid Inheritance using Virtual Function
class base_class_Name { //body_of_Base_class }; class derived_class_Name1 : virtual Access_Specifier base_class_Name //or Access_Specifier virtual base_class_Name { //body_of_derived_class1 }; class derived_class_Name2 : virtual Access_Specifier base_class_Name //or Access_Specifier virtual base_class_Name { //body_of_derived_class2 }; class derived_class_Name3 : class derived_class_Name1, class derived_class_Name2 { //body_of_derived_class3 };


अगर निचे दिए हुए program को देखे तो virtual function दिखेगा |
दिया हुआ program अगर बिना virtual function के compile करे तो 'member ambiguous' का error आ जाता है |
इसका कारण ये है कि, class A; class B और class C इन दोनों पर derived किया गया है और class D पर class B और class C की वजह से class A की दो copies class D पर आयी है | और आखिर में class D का object ही सब inheritance का data access कर रहा है |
Virtual Function लेने का कारण ये है कि, class A की सिर्फ एक copy ही class D को मिल जाए |
Source Code :Output:#include <iostream.h> using namespace std; class A{ public: display1(){ cout<<"Class A"<<endl; } }; class B : virtual public A{ //or public virtual A public: display2(){ cout <<"Class B"<<endl; } }; class C : virtual public A{ //or public virtual A public: display3(){ cout <<"Class C"<<endl; } }; class D : public C, public B{ public: display4(){ cout <<"Class D"<<endl; } }; int main(){ D obj; obj.display1(); obj.display2(); obj.display3(); obj.display4(); return 0; }
Class A Class B Class C Class D