Inheritance in C++

“हेलो दोस्तों! इस पोस्ट में हम ‘C++ प्रोग्रामिंग’ में उपयोग होने वाले Inheritance, गुणों (properties) और कार्यों (methods) के बारे में सीखेंगे। साथ ही, Inheritance का उपयोग कोड को पुनः प्रयोग करने के बारे में जानेंगे। Inheritance C++ में Object-Oriented Programming (OOP) का एक महत्वपूर्ण सिद्धांत है। आइए इनको विस्तार से समझते हैं।

Inheritance का परिचय

Inheritance C++ में Object-Oriented Programming (OOP) का एक महत्वपूर्ण सिद्धांत है। Inheritance का अर्थ है विरासत। इसका उपयोग एक class के गुणों (properties) और कार्यों (methods) को दूसरी क्लास में उपयोग करने के लिए किया जाता है। इससे कोड का पुनः उपयोग (reusability) बढ़ता है और कोड अधिक व्यवस्थित बनता है।

Inheritance में, जो क्लास अपनी Properties और Methods को दूसरी Class को देती है, उसे Base Class (Parent Class) कहा जाता है, और जो Class Properties और Methods को प्राप्त करती है उसे Derived Classकहा जाता है।


Types of Inheritance (विरासत के प्रकार)

C++ में Inheritance के पांच प्रमुख प्रकार होते हैं:

  1. Single Inheritance
  2. Multiple Inheritance
  3. Multilevel Inheritance
  4. Hierarchical Inheritance
  5. Hybrid Inheritance

1. Single Inheritance

Single Inheritance में एक Derived Class केवल एक Base Class से विरासत में गुण और कार्य प्राप्त करती है।

उदाहरण:

cpp

#include <iostream>
using namespace std;

class Base {
public:
    void displayBase() {
        cout << "Base Class" << endl;
    }
};

class Derived : public Base { 
public:
    void displayDerived() {
        cout << "Derived class" << endl;
    }
};

int main() {
    Derived obj;
    obj.displayBase(); // Base class का Method
    obj.displayDerived(); // Derived class का Method
    return 0;
}

Output:-

Base class 
Derived class

2. Multiple Inheritance

Multiple Inheritance में एक Derived Class एक से अधिक Base Classes से गुण और कार्य प्राप्त करती है।

उदाहरण:

#include <iostream>
using namespace std;

class B1 {
public:
    void displayBase1() {
        cout << "Base1 class" << endl;
    }
};

class B2 {
public:
    void displayBase2() {
        cout << "Base2 class" << endl;
    }
};

class dc : public B1, public B2 { 
public:
    void displayDerived() {
        cout << "Derived class" << endl;
    }
};

int main() {
    dc obj;
    obj.displayBase1();
    obj.displayBase2();
    obj.displayDerived();
    return 0;
}

Output:-

Base1 class
Base2 class
Derived class

3. Multilevel Inheritance

Multilevel Inheritance में एक Class दूसरी क्लास से विरासत में लेती है, जो खुद किसी अन्य क्लास से विरासत में लेती है। यह एक श्रेणीबद्ध संरचना बनाता है।

उदाहरण:-

#include <iostream>
using namespace std;

class GrandParent {
public:
    void displayGrandParent() {
        cout << "GrandParent class" << endl;
    }
};

class Parent : public GrandParent {
public:
    void displayParent() {
        cout << "Parent class" << endl;
    }
};

class Child : public Parent { 
public:
    void displayChild() {
        cout << "Child class" << endl;
    }
};

int main() {
    Child obj;
    obj.displayGrandParent();
    obj.displayParent();
    obj.displayChild();
    return 0;
}

Output:-

GrandParent class 
Parent class
Child class

4. Hierarchical Inheritance

Hierarchical Inheritance में एक Base Class से कई Derived Classes विरासत में गुण प्राप्त करती हैं।

उदाहरण:

#include <iostream>
using namespace std;

class Base {
public:
    void displayBase() {
        cout << "Base Class" << endl;
    }
};

class Derived1 : public Base {
public:
    void displayDerived1() {
        cout << "Derived1 class" << endl;
    }
};

class Derived2 : public Base {
public:
    void displayDerived2() {
        cout << "Derived2 class" << endl;
    }
};

int main() {
    Derived1 obj1;
    Derived2 obj2;

    obj1.displayBase();
    obj1.displayDerived1();

    obj2.displayBase();
    obj2.displayDerived2();
    
    return 0;
}

Output:-

Base class
Derived1 class
Base class
Derived2 class

5. Hybrid Inheritance

Hybrid Inheritance विभिन्न प्रकार के inheritance का संयोजन है, जैसे कि multiple और multilevel inheritance का मिश्रण।

Virtual Base Class

Virtual Base Class का उपयोग Dimond Problem को हल करने के लिए किया जाता है। Diamond Problem तब उत्पन्न होता है जब एक ही base class को multiple paths से inherit किया जाता है, जिससे derived class में base class की duplicate copies बन जाती हैं।

उदाहरण:

#include <iostream>
using namespace std;

class Base {
public:
    void display() {
        cout << "Base class" << endl;
    }
};

class a1 : virtual public Base {
};

class a2 : virtual public Base {
};

class xyz : public a1, public a2 {
};

int main() {
    X3 obj;
    obj.display(); //
    return 0;
}

Output:-

Base class

इस उदाहरण में D1 और D2 दोनों Base क्लास से विरासत में लेते हैं, और D3 D1 और D2 से। यहाँ virtual का उपयोग करने से Base क्लास की केवल एक ही copy बनती है, जिससे डायमंड प्रॉब्लम से बचा जाता है।


संक्षेप में

  • Inheritance का उपयोग कोड को पुनः प्रयोग करने और व्यवस्थित बनाने के लिए किया जाता है।
  • C++ में Inheritance के पाँच प्रकार होते हैं: Single, Multiple, Multilevel, Hierarchical, और Hybrid।

Leave a comment