🧬
Inheritance & Polymorphism

Inheritance — Basics

Ek Class Se Doosri Banao
💡 Inheritance parents se properties inherit karne jaisa hai — jaise bachcha apne parents ki kuch features (aankhon ka rang) automatically paata hai, aur apni khud ki nayi cheezein bhi add kar sakta hai.

Inheritance ek class (derived/child) ko doosri class (base/parent) ke members (variables + functions) automatically "inherit" karne deta hai — code reuse ka powerful tareeka, jaise "Car" aur "Bike" dono "Vehicle" ki common properties (speed, brand) inherit kar sakte hain, bina unhe dobara likhe.

Syntax: class Derived : public Base { ... }. "public" inheritance ka matlab hai Base ke public members, Derived mein bhi public rehte hain — ye sabse common type hai.

class Vehicle {
  public:
    string brand;
    void honk() { cout << "Beep!" << endl; }
};

class Car : public Vehicle {   // Car, Vehicle ko inherit karta hai
  public:
    int doors;
};

int main() {
  Car myCar;
  myCar.brand = "Toyota";   // Vehicle se inherit hua
  myCar.doors = 4;           // Car ka apna member
  myCar.honk();               // Vehicle ka method, Car use kar sakta hai

  return 0;
}
🧬
Inheritance parents se properties inherit karne jaisa hai — jaise bachcha apne parents ki kuch features (aankhon ka rang) automatically paata hai, aur apni khud ki nayi cheezein bhi add kar sakta hai.
1 / 6
⚡ Quick Recap
  • Derived class, Base class ke members automatically paata hai
  • class Derived : public Base { }
  • Code reuse ka powerful tareeka — "is-a" relationships ke liye
Is page mein (2 subtopics)

Inheritance type (public/protected/private) decide karta hai base class ke members derived class mein KITNI accessibility rakhte hain. public inheritance (sabse common) mein access levels same rehte hain. protected/private inheritance rare hain, aur base ke public members ko bhi derived mein zyada restrict kar dete hain.

class Base {
  public: int a;
  protected: int b;
};

class PublicDerived : public Base {
  // a is still public, b is still protected
};

class PrivateDerived : private Base {
  // a AND b dono ab private ho jaate hain PrivateDerived mein
};
💡Tip: 99% real-world code mein public inheritance hi use hota hai — "is-a" relationship ke liye. protected/private inheritance rare, specialized cases ke liye hain.

Jab derived class ka object banta hai, sabse pehle BASE class ka constructor chalta hai, uske baad DERIVED class ka. Destructor mein order ulta hota hai — pehle derived, phir base. Ye "construction bottom-up, destruction top-down" pattern hai.

class Base {
  public: Base() { cout << "Base constructor\n"; }
};

class Derived : public Base {
  public: Derived() { cout << "Derived constructor\n"; }
};

int main() {
  Derived d;
  // Output:
  // Base constructor
  // Derived constructor
  return 0;
}
💡Tip: Agar Base class ka default constructor nahi hai (sirf parameterized), Derived class ke constructor mein explicitly Base(args) call karna padta hai initializer list mein.