Types of Inheritance in C++
The process of inheriting properties of objects of one class by objects of another class. The class whose properties are inherited by another class is called Base or Parent or Super class and the class which inherits properties of another class is called Derived or Child or Sub class.
C++ supports six types of inheritance as follows :
- Single Inheritance
- Multilevel Inheritance
- Multiple Inheritance
- Hierarchical Inheritance
- Multipath Inheritance
- Hybrid Inheritance
1. Single Inheritance
When a single class is derived from a single parent class, it is called Single inheritance. It is the simplest of all inheritance.
Syntax of Single Inheritance :
class A { properties; //A is the base class methods ; }; class B: public A { properties; // B is the derived class methods ; } ;
2. Multilevel Inheritance
When the derived class inherits from a class, which in turn inherits from some other class, it is called Multilevel inheritance. The Super class for one, is sub class for the other.
Syntax of multilevel Inheritance:
class A { properties ; //A is the base class methods ; }; class B : public A { properties ; //class B is derived from class A methods ; }; class C: public B { properties ; //class C is derived from class B methods ; }; class D: public C { properties; //class D is derived from class C methods ; };
3. Multiple Inheritance
When one class is inherited from more than one base class, it’s known as Multiple inheritance.
Syntax of Multiple Inheritance:
class A { properties ; //A is the base class methods; }; class B { properties; //B is the base class methods; }; class C { properties ; //C is the base class methods; }; class D: public A, public B, public C { properties; //class D is derived from the class A,B,C methods; } ;
4. Hierarchical Inheritance
When more than one class is inherited from the base class, it’s known as Hierarchical inheritance.
Syntax of Hierarchical Inheritance:
class A { properties; //A is the base class methods; }; class B: public A { properties ; //class B is derived from the class A methods; }; class C: public A { properties; //class C is derived from the class A methods; } ;
5. Multipath Inheritance
When a derived class has two base classes and these two base classes have one common base class, it is called multipath inheritance
Syntax of Multipath Inheritance:
class A { properties; //A is the base class methods ; }; class B: virtual public A { properties; //class B is derived from the class A methods; }; class C: virtual public A { properties ; //class C is derived from the class A methods; }; class D: public B, public C { properties; //class D is derived from the class B and C methods; };
NOTE: Virtual must be used to overcome multipath problem.
6. Hybrid Inheritance
This is the combination of more than one inheritance. It may be combination of Multilevel and Multiple inheritance or Hierarchical and Multilevel inheritance or Hierarchical and Multipath inheritance or Hierarchical, Multilevel and Multiple inheritance.
Syntax of Hybrid Inheritance:
class A { properties; //A is the base class methods; }; class B: public A { properties ; //class B is derived from class A methods; }; class C: public B { properties; //class C is derived from class B methods; }; class D: public A, public C { properties ; //class D is derived from the class A and C methods; };