Types of Inheritance

  1. 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…”; }

};

 

  1. 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”; }

};

 

  1. 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”; }

};

 

  1. 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”; }

};

 

  1. 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

};