A Complete Guide - CPP Programming Types of Inheritance Single, Multiple, Multilevel, Hierarchical, Hybrid

Last Updated: 03 Jul, 2025   
  YOU NEED ANY HELP? THEN SELECT ANY TEXT.

Single Inheritance

In single inheritance, a derived class inherits members from a single parent class. This is the simplest form of inheritance.

  • Key Features:

    • A single parent-child relationship.
    • Easier to manage as it forms a straightforward hierarchy.
    • Reduces code duplication by sharing functionality.
  • Important Info:

    • Syntax: class Derived : access_specifier Base {}
    • Examples:
      class Animal { public: void eat() { std::cout << "Eating..." << std::endl; }
      }; class Dog : public Animal { public: void bark() { std::cout << "Barking..." << std::endl; }
      };
      
    • In the example, Dog class inherits the eat method from the Animal class.

Multiple Inheritance

Multiple inheritance enables a derived class to inherit from more than one base class. This type is commonly used when a class needs to combine features from several classes.

  • Key Features:

    • Combines multiple base classes' functionalities.
    • Potential for ambiguities or conflicts if base classes have similar methods or member variables.
  • Important Info:

    • Syntax: class Derived : access_specifier Base1, access_specifier Base2 {}
    • Diamond Problem: A potential conflict arises when a derived class inherits the same base class through two different paths. C++ provides mechanisms like virtual inheritance to handle this issue.
    • Example:
      class Father { public: void display_father() { std::cout << "Father..." << std::endl; }
      }; class Mother { public: void display_mother() { std::cout << "Mother..." << std::endl; }
      }; class Child : public Father, public Mother { public: void display_child() { std::cout << "Child..." << std::endl; }
      };
      
    • The Child class inherits from both Father and Mother.

Multilevel Inheritance

In multilevel inheritance, a derived class inherits from another derived class, forming a chain of inheritance. This is useful for representing real-world relationships where each child builds upon its parent's features.

  • Key Features:

    • Creates a hierarchical structure with a chain of inheritance.
    • Can lead to a complex and rigid design.
  • Important Info:

    • Syntax: class B : access_specifier A {} followed by class C : access_specifier B {}
    • An example where C inherits from B, and B in turn inherits from A.
    • Example:
      class Grandfather { public: void display_grandfather() { std::cout << "Grandfather..." << std::endl; }
      }; class Father : public Grandfather { public: void display_father() { std::cout << "Father..." << std::endl; }
      }; class Child : public Father { public: void display_child() { std::cout << "Child..." << std::endl; }
      };
      
    • Child class indirectly inherits display_grandfather through Father.

Hierarchical Inheritance

Hierarchical Inheritance involves multiple derived classes inheriting from a single base class. It creates a tree-like structure that represents various categories or subclasses.

  • Key Features:

    • Several children classes under a single parent class.
    • Common base class code is reused by all derived classes, promoting efficiency.
  • Important Info:

    • Syntax: Several class DerivedX : access_specifier Base {} declarations.
    • Each DerivedX is independent but shares base class features.
    • Example:
      class Vehicle { public: void start() { std::cout << "Starting..." << std::endl; }
      }; class Car : public Vehicle {};
      class Truck : public Vehicle {};
      class Bike : public Vehicle {};
      
    • All three (Car, Truck, Bike) inherit the start method from Vehicle.

Hybrid Inheritance

Hybrid inheritance combines two or more types of inheritance discussed above to create a complex inheritance structure. It helps in creating a flexible and powerful class design.

  • Key Features:

    • Mixes different types of inheritance, leading to a rich class hierarchy.
    • Potential for increased complexity and conflicts, requiring careful management.
  • Important Info:

    • Often referred to as Virtual Inheritance or Complex Inheritance.
    • Common scenario: Multiple classes inherit from a common base using various inheritance types.
    • Example (Combining Multilevel and Multiple):
      class Animal { public: void eat() { std::cout << "Eating..." << std::endl; }
      }; class Pet : public Animal { public: void play() { std::cout << "Playing..." << std::endl; }
      }; class Mammal : public Animal { public: void breathe() { std::cout << "Breathing..." << std::endl; }
      }; class Dog : public Pet, public Mammal { public: void bark() { std::cout << "Barking..." << std::endl; }
      };
      
    • Dog inherits from both Pet and Mammal, which in turn inherit from Animal.

Summary

Each type of inheritance serves unique purposes and has specific characteristics:

  • Single Inheritance: Simple, no ambiguity.
  • Multiple Inheritance: Combines features, needs to handle diamond problems carefully.
  • Multilevel Inheritance: Chains of inheritance, promotes code reusability.
  • Hierarchical Inheritance: Many classes derive from a single base, efficient structure.
  • Hybrid Inheritance: Combines different types, flexible yet potentially complex.

Online Code run

🔔 Note: Select your programming language to check or run code at

💻 Run Code Compiler

Step-by-Step Guide: How to Implement CPP Programming Types of Inheritance Single, Multiple, Multilevel, Hierarchical, Hybrid

1. Single Inheritance

In single inheritance, a derived class inherits from a single base class.

#include <iostream>
using namespace std; // Base class
class Animal {
public: void eat() { cout << "This animal eats food." << endl; }
}; // Derived class inheriting from Animal
class Dog : public Animal {
public: void bark() { cout << "The dog barks." << endl; }
}; int main() { Dog myDog; myDog.eat(); // Inherited function from Animal myDog.bark(); // Function in Dog return 0;
}

Explanation:

  • Animal is the base class with a method eat().
  • Dog is the derived class that inherits from Animal and adds its own method bark().

2. Multiple Inheritance

In multiple inheritance, a derived class inherits from more than one base class.

#include <iostream>
using namespace std; // Base class 1
class Swimming {
public: void swim() { cout << "Swims in water." << endl; }
}; // Base class 2
class Walking {
public: void walk() { cout << "Walks on land." << endl; }
}; // Derived class inheriting from Swimming and Walking
class amphibian : public Swimming, public Walking {
public: void breathe() { cout << "Breathes oxygen." << endl; }
}; int main() { amphibian frog; frog.swim(); // Inherited method from Swimming frog.walk(); // Inherited method from Walking frog.breathe(); // Method of Amphibian return 0;
}

Explanation:

  • Swimming is one base class with a method swim().
  • Walking is another base class with a method walk().
  • amphibian is the derived class that inherits from both Swimming and Walking.

3. Multilevel Inheritance

In multilevel inheritance, a derived class is created from another derived class.

#include <iostream>
using namespace std; // Base class
class Grandparent {
public: void tellStory() { cout << "Grandparent's story." << endl; }
}; // Intermediate derived class inheriting from Grandparent
class Parent : public Grandparent {
public: void shareThoughts() { cout << "Parent's thoughts." << endl; }
}; // Derived class inheriting from Parent
class Child : public Parent {
public: void sharePlans() { cout << "Child's plans." << endl; }
}; int main() { Child me; me.tellStory(); // Inherited method from Grandparent me.shareThoughts(); // Inherited method from Parent me.sharePlans(); // Method of Child return 0;
}

Explanation:

  • Grandparent is the base class with a method tellStory().
  • Parent is an intermediate derived class inheriting from Grandparent and adds shareThoughts().
  • Child is the derived class inheriting from Parent and adds sharePlans().

4. Hierarchical Inheritance

In hierarchical inheritance, multiple derived classes inherit from a single base class.

#include <iostream>
using namespace std; // Base class
class Vehicle {
public: void start() { cout << "Vehicle starts." << endl; }
}; // Derived class 1
class Car : public Vehicle {
public: void drive() { cout << "Car is driving." << endl; }
}; // Derived class 2
class Bike : public Vehicle {
public: void pedal() { cout << "Bike is pedaling." << endl; }
}; int main() { Car myCar; myCar.start(); // Inherited from Vehicle myCar.drive(); // Method of Car Bike myBike; myBike.start(); // Inherited from Vehicle myBike.pedal(); // Method of Bike return 0;
}

Explanation:

  • Vehicle is the base class with a method start().
  • Both Car and Bike are derived classes inheriting from Vehicle.

5. Hybrid Inheritance

Hybrid inheritance is a combination of two or more types of inheritance.

#include <iostream>
using namespace std; // Base class
class Vehicle {
public: void start() { cout << "Vehicle starts." << endl; }
}; // Derived class
class Car : public Vehicle {
public: void drive() { cout << "Car is driving." << endl; }
}; // Base class
class Boat {
public: void sail() { cout << "Boat is sailing." << endl; }
}; // Derived class inheriting from both Car and Boat
class AmphibiousVehicle : public Car, public Boat {
public: void traverse() { cout << "Amphibious Vehicle can drive and sail." << endl; }
}; int main() { AmphibiousVehicle myVehicle; myVehicle.start(); // Inherited from Vehicle via Car myVehicle.drive(); // Inherited from Car myVehicle.sail(); // Inherited from Boat myVehicle.traverse();// Method of AmphibiousVehicle return 0;
}

Explanation:

  • Vehicle is a base class with a method start().
  • Car is a derived class inheriting from Vehicle.
  • Boat is another base class with a method sail().
  • AmphibiousVehicle is a hybrid derived class that inherits from both Car and Boat.
 YOU NEED ANY HELP? THEN SELECT ANY TEXT.

Top 10 Interview Questions & Answers on CPP Programming Types of Inheritance Single, Multiple, Multilevel, Hierarchical, Hybrid

1. What is Inheritance in C++?

Answer: Inheritance is a fundamental concept of Object-Oriented Programming (OOP) that allows a class (derived or child class) to inherit properties and methods from another class (base or parent class). There are several types of inheritance: Single, Multiple, Multilevel, Hierarchical, and Hybrid.

2. Explain Single Inheritance in C++ with Example.

Answer: In Single Inheritance, a derived class inherits from a single base class. This means that one class serves as a base class for only one derived class.

Example:

class Vehicle {
public: void start() { cout << "Vehicle started." << endl; }
}; class Car : public Vehicle {
public: void drive() { cout << "Car is driving." << endl; }
}; int main() { Car myCar; myCar.start(); // Inherited method myCar.drive(); // Defined method return 0;
}

3. Define Multiple Inheritance in C++ and Explain Its Usage.

Answer: Multiple Inheritance occurs when a derived class inherits from two or more base classes. This allows the derived class to inherit features from more than one base class, providing greater flexibility.

Example:

class Vehicle {
public: void start() { cout << "Vehicle started." << endl; }
}; class FuelPowered {
public: void refuel() { cout << "Refilled fuel." << endl; }
}; class Car : public Vehicle, public FuelPowered {
public: void drive() { cout << "Car is driving." << endl; }
}; int main() { Car myCar; myCar.start(); // Inherited method from Vehicle myCar.refuel(); // Inherited method from FuelPowered myCar.drive(); // Defined method return 0;
}

Note: Multiple inheritance can lead to ambiguity if both base classes have a method with the same name (Diamond Problem). C++ provides mechanisms like virtual inheritance to resolve such issues.

4. What is Multilevel Inheritance in C++?

Answer: Multilevel Inheritance is when a derived class is created from another derived class. It allows a class to inherit features from multiple classes through a chain of inheritance.

Example:

class Animal {
public: void eat() { cout << "Animal is eating." << endl; }
}; class Dog : public Animal {
public: void bark() { cout << "Dog is barking." << endl; }
}; class Bulldog : public Dog {
public: void guard() { cout << "Bulldog is guarding." << endl; }
}; int main() { Bulldog myBulldog; myBulldog.eat(); // Inherited from Animal myBulldog.bark(); // Inherited from Dog myBulldog.guard(); // Defined method return 0;
}

5. What is Hierarchical Inheritance in C++?

Answer: In Hierarchical Inheritance, multiple derived classes inherit from a single base class. This forms a hierarchy or tree-like structure.

Example:

class Animal {
public: void eat() { cout << "Animal is eating." << endl; }
}; class Dog : public Animal {
public: void bark() { cout << "Dog is barking." << endl; }
}; class Cat : public Animal {
public: void meow() { cout << "Cat is meowing." << endl; }
}; int main() { Dog myDog; Cat myCat; myDog.eat(); // Inherited from Animal myDog.bark(); // Defined method myCat.eat(); // Inherited from Animal myCat.meow(); // Defined method return 0;
}

6. What is a Hybrid Inheritance?

Answer: Hybrid Inheritance is a combination of two or more types of inheritance. It deals with the complex relationship between classes involving multiple levels of inheritance and multiple parent inheritance.

Example:

class Vehicle {
public: void start() { cout << "Vehicle started." << endl; }
}; class FuelVehicle : public Vehicle {
public: void refuel() { cout << "Refilled fuel." << endl; }
}; class ElectricVehicle : public Vehicle {
public: void charge() { cout << "Charged battery." << endl; }
}; class HybridCar : public FuelVehicle, public ElectricVehicle {
public: void drive() { cout << "Hybrid car is driving." << endl; }
}; int main() { HybridCar myHybridCar; myHybridCar.start(); // Inherited from Vehicle myHybridCar.refuel(); // Inherited from FuelVehicle myHybridCar.charge(); // Inherited from ElectricVehicle myHybridCar.drive(); // Defined method return 0;
}

7. What Are the Advantages of Using Inheritance in C++?

Answer: The main advantages of inheritance are:

  • Code Reusability: Allows code reuse through derivation of existing classes.
  • Improved Maintainability: Encourages a modular approach to programming, making it easier to manage and update code.
  • Extensibility: Facilitates the introduction of new classes that extend existing functionality without modifying existing code.
  • Polymorphism: Enables the same function name to be used for different purposes.

8. What Are the Potential Drawbacks of Inheritance?

Answer: Some potential drawbacks include:

  • Increased Complexity: Complex inheritance hierarchies can make the code harder to understand and maintain.
  • Tight Coupling: Inheritance can lead to tight coupling between classes, making changes in the base class affect all derived classes.
  • Ambiguity Issues: Multiple inheritance can lead to ambiguity issues, especially the Diamond Problem, which can be resolved using virtual inheritance.

9. Can You Explain Virtual Inheritance in C++?

Answer: Virtual Inheritance is used to solve the Diamond Problem in multiple inheritance. It ensures that only one copy of a base class's members is passed down through the hierarchy.

Example:

class Vehicle {
public: virtual void start() { cout << "Vehicle started." << endl; }
}; class FuelVehicle : virtual public Vehicle {};
class ElectricVehicle : virtual public Vehicle {}; class HybridCar : public FuelVehicle, public ElectricVehicle {
public: void drive() { cout << "Hybrid car is driving." << endl; }
}; int main() { HybridCar myHybridCar; myHybridCar.start(); // Works without ambiguity myHybridCar.drive(); // Defined method return 0;
}

10. What Are the Common Use Cases for Each Type of Inheritance?

Answer: The use cases for each type of inheritance depend on the problem domain:

  • Single Inheritance: Ideal for simple class hierarchies. E.g., Derived class Car inheriting from base class Vehicle.
  • Multiple Inheritance: Useful when a class needs features from multiple sources. E.g., HybridCar inheriting from FuelVehicle and ElectricVehicle.
  • Multilevel Inheritance: Good for creating a chain of derived classes. E.g., Bulldog inheriting from Dog which inherits from Animal.
  • Hierarchical Inheritance: Useful when a number of classes should inherit from a single base class. E.g., Dog and Cat inheriting from Animal.
  • Hybrid Inheritance: Suitable for complex relationships that involve both multiple and hierarchical inheritance. E.g., HybridCar inheriting features from both FuelVehicle and ElectricVehicle.

You May Like This Related .NET Topic

Login to post a comment.