Inheritance
Inheritance, C++ में एक बहुत ही important concept है। Inheritance वह process है जिसमें एक derived class (child class) अपनी base class (parent class) की properties और methods को inherit करती है।
Table of Contents
Toggle- Parent Class / Superclass / Base Class: वह Class जिसकी properties और methods को दूसरी Class inherit करती है।
- Child Class / Subclass / Derived Class: वह Class जो किसी Parent Class से properties और methods को inherit करती है।
Syntax:
class BaseClass {
// members of base class
};
class DerivedClass : access-specifier BaseClass {
// members of derived class
};
Example (उदाहरण)
#include <iostream>
using namespace std;
class Vehicle { // Base class
public:
void start() { cout << “Vehicle started” << endl; }
};
class Car : public Vehicle { // Derived class
public:
void honk() { cout << “Car horn sounds!” << endl; }
};
int main() {
Car myCar;
myCar.start(); // Inherited
myCar.honk(); // Own method
return 0;
}
Importance of Inheritance (महत्व)
- Code Reusability : बार-बार same code लिखने की आवश्यकता नहीं।
- Less Development Time : Faster coding और maintenance आसान।
- Extensibility : New features add करना आसान हो जाता है।
- Data Hiding : Proper access specifiers use करके केवल आवश्यक data expose कर सकते हैं।
Types of Inheritance (प्रकार)
C++ में Inheritance के 5 मुख्य प्रकार हैं –
- Single Inheritance
- Multiple Inheritance
- Multilevel Inheritance
- Hierarchical Inheritance
- Hybrid Inheritance
1. Single Inheritance
Single Inheritance एक ऐसा inheritance type है, जिसमें कोई derived class (child class) केवल एक base class (parent class) से अपनी properties और functions को inherit करती है।
Syntax:
class BaseClass {
// Base class members (variables and methods)
};
class DerivedClass : access_specifier BaseClass {
// Derived class members (variables and methods)
};
2. Multiple Inheritance
Multiple Inheritance एक ऐसा Inheritance type है, जिसमें एक Child Class (या Derived Class) एक से अधिक Parent Classes (या Base Classes) से properties और functions inherit करती है।
Syntax:
class Base1 {
// Base1 class members (variables and methods)
};
class Base2 {
// Base2 class members (variables and methods)
};
class Derived : access_specifier1 Base1, access_specifier2 Base2 {
// Derived class members (variables and methods)
};
3. Multilevel Inheritance
Multilevel Inheritance एक ऐसा inheritance type है, जिसमें एक class दूसरी class से properties और functions inherit करती है, और वह दूसरी class किसी तीसरी class से properties और functions inherit करती है। यह एक hierarchy या chain बनाता है, जिसमें एक child class अपने parent class और grandparent class दोनों के properties और methods को access कर सकती है।
Syntax:
class BaseClass {
// Base class members
};
class Derived1 : access_specifier BaseClass {
// Derived1 class members
};
class Derived2 : access_specifier Derived1 {
// Derived2 class members
};
4. Hierarchical Inheritance
Hierarchical Inheritance एक inheritance का type है, जिसमें एक single base class से multiple subclasses inherit करती हैं। यानी, एक ही parent class के कई children classes होते हैं। यह एक tree या one-to-many relationship बनाता है।
Syntax:
class BaseClass {
// Base class members
};
class Derived1 : access_specifier BaseClass {
// Derived1 class members
};
class Derived2 : access_specifier BaseClass {
// Derived2 class members
};
// और Derived3 आदि भी हो सकते हैं
5. Hybrid Inheritance
Hybrid inheritance दो या दो से अधिक inheritance का combination होता है। यह सबसे complex और flexible inheritance structure है, जहाँ multiple और hierarchical inheritance जैसी concepts को एक साथ मिलाया जाता है।
Syntax:
class A {
// Base class A members
};
class B : public A {
// Derived class B members
};
class C : public A {
// Derived class C members
};
class D : public B, public C {
// Derived class D inherits from B and C
};
Advantages (लाभ)
Code Reusability – base class में एक बार code लिखा गया है, तो उसे बार-बार लिखने की ज़रूरत नहीं होती, derived class सीधे उसी code को reuse कर सकती है।
Easy Maintenance – अगर parent class में कोई change किया जाए तो उसका effect child classes में भी दिखाई देता है।
Less Redundancy – बार-बार same code लिखने की आवश्कता नहीं पड़ती, जिससे program छोटा और clean रहता है।
Extensibility – नए features add करना आसान हो जाता है, क्योंकि existing class को reuse करके नई functionality बनाई जा सकती है।
Readability – Inheritance से code का structure simple और आसानी से समझ में आने वाला हो जाता है।
Disadvantages (हानि)
Dependency Problem – Child class हमेशा Parent class पर dependent रहती है, जिससे कभी-कभी flexibility कम हो जाती है।
Complex Hierarchy – अगर inheritance levels बहुत ज़्यादा हों, तो code को समझना और manage करना कठिन हो जाता है।
Overriding Issues – Parent और Child में same नाम के functions होने पर confusion और errors आने की संभावना रहती है।
Performance Impact – Deep inheritance chain होने पर execution speed slow हो सकती है।
Unnecessary Members – कई बार parent class के ऐसे members भी inherit हो जाते हैं, जिनकी आवश्यकता child class को नहीं होती, जिससे memory waste हो सकती है।
Access Specifiers in Inheritance
Access Specifier | Base Class Member | Derived Class Access | Outside Class Access |
Public | Accessible | Accessible | Accessible |
Protected | Accessible | Accessible | Not Accessible |
Private | Accessible | Not Accessible | Not Accessible |