Types of Inheritance
- Single Inheritance
In single inheritance, a single derived class inherits from one base class. It is the simplest form and promotes code reusability by extending one class.
General Syntax:
class Base {
public:
void display();
};
class Derived : public Base {
public:
void show();
};
Example:
class Animal {
public:
void eat() { cout << “Eating…”; }
};
class Dog : public Animal {
public:
void bark() { cout << “Barking…”; }
};
- Multiple Inheritance
A derived class inherits from more than one base class. It combines functionalities of multiple classes but may cause ambiguity if both base classes have the same member.
General Syntax:
class A {
// …
};
class B {
// …
};
class C : public A, public B {
// …
};
Example:
class Father {
public:
void work() { cout << “Father works”; }
};
class Mother {
public:
void cook() { cout << “Mother cooks”; }
};
class Child : public Father, public Mother {
public:
void play() { cout << “Child plays”; }
};
- Multilevel Inheritance
Multilevel inheritance means a class is derived from another derived class. It forms a chain of inheritance that reflects deep hierarchy.
Syntax:
class A {
// …
};
class B : public A {
// …
};
class C : public B {
// …
};
Example:
class Grandparent {
public:
void history() { cout << “Family history”; }
};
class Parent : public Grandparent {
public:
void tradition() { cout << “Family tradition”; }
};
class Child : public Parent {
public:
void lifestyle() { cout << “Modern lifestyle”; }
};
- Hierarchical Inheritance
In this form, multiple derived classes inherit from a single base class. It represents one-to-many relationships.
Syntax:
class A {
// …
};
class B : public A {
// …
};
class C : public A {
// …
};
Example:
class Teacher {
public:
void teach() { cout << “Teaching…”; }
};
class MathTeacher : public Teacher {
public:
void teachMath() { cout << “Math class”; }
};
class EnglishTeacher : public Teacher {
public:
void teachEnglish() { cout << “English class”; }
};
- Hybrid Inheritance
This is a combination of more than one type of inheritance, such as multilevel and multiple inheritance. It often leads to ambiguity and is resolved using virtual base classes.
Syntax:
class A { };
class B : public A { };
class C : public A { };
class D : public B, public C { };
Example:
class Person {
public:
void info() { cout << “Person details”; }
};
class Student : virtual public Person { };
class Employee : virtual public Person { };
class Intern : public Student, public Employee {
// Uses Person only once due to virtual base
};