๐ What is Inheritance?
Inheritance is a mechanism where a child class (derived class) inherits properties and behaviors from a parent class (base class).
C++ supports five types of inheritance:
๐งฉ 1. Single Inheritance
โ Description:
One base class and one derived class.
๐ง Syntax:
class A { /* base class */ };
class B : public A { /* derived class */ };
๐งช Example:
class Animal {
public:
void eat() {
cout << "Eating..." << endl;
}
};
class Dog : public Animal {
public:
void bark() {
cout << "Barking..." << endl;
}
};
๐งฉ 2. Multiple Inheritance
โ Description:
One derived class inherits from more than one base class.
๐ง Syntax:
class A { };
class B { };
class C : public A, public B { };
๐งช Example:
class Father {
public:
void home() {
cout << "Owns a home" << endl;
}
};
class Mother {
public:
void car() {
cout << "Owns a car" << endl;
}
};
class Child : public Father, public Mother {
public:
void bike() {
cout << "Owns a bike" << endl;
}
};
๐งฉ 3. Multilevel Inheritance
โ Description:
A class inherits from a derived class, forming a chain.
๐ง Syntax:
class A { };
class B : public A { };
class C : public B { };
๐งช Example:
class Grandparent {
public:
void legacy() {
cout << "Family legacy" << endl;
}
};
class Parent : public Grandparent {
public:
void guidance() {
cout << "Parental guidance" << endl;
}
};
class Child : public Parent {
public:
void study() {
cout << "Child studies" << endl;
}
};
๐งฉ 4. Hierarchical Inheritance
โ Description:
Multiple classes inherit from one base class.
๐ง Syntax:
class A { };
class B : public A { };
class C : public A { };
๐งช Example:
class Teacher {
public:
void teach() {
cout << "Teaching..." << endl;
}
};
class MathTeacher : public Teacher {
public:
void teachMath() {
cout << "Teaching Math" << endl;
}
};
class ScienceTeacher : public Teacher {
public:
void teachScience() {
cout << "Teaching Science" << endl;
}
};
๐งฉ 5. Hybrid Inheritance
โ Description:
Combination of two or more types of inheritance.
๐ง Example:
This combines multiple and multilevel inheritance.
class A {
public:
void displayA() {
cout << "Class A" << endl;
}
};
class B : public A {
public:
void displayB() {
cout << "Class B" << endl;
}
};
class C {
public:
void displayC() {
cout << "Class C" << endl;
}
};
class D : public B, public C {
public:
void displayD() {
cout << "Class D" << endl;
}
};
๐ Note: Hybrid inheritance can cause the Diamond Problem, which can be solved using virtual inheritance.
๐ Comparison Table:
Type | Description | Example Classes |
---|---|---|
Single | One base, one derived | A โ B |
Multiple | One derived from many bases | A, B โ C |
Multilevel | A โ B โ C (Chain of inheritance) | A โ B โ C |
Hierarchical | One base, many derived | A โ B, C |
Hybrid | Mixture of two or more types | A โ B & C โ D |
๐ Summary:
- Inheritance helps in code reuse and organizing programs.
- C++ supports 5 types: Single, Multiple, Multilevel, Hierarchical, and Hybrid.
- Care should be taken with Multiple and Hybrid inheritance to avoid ambiguity.