Basics of Inheritance in C++
Inheritance is a fundamental concept in Object-Oriented Programming (OOP). It allows a class (called the derived or child class) to inherit properties and behaviors from another class (called the base or parent class). Inheritance promotes code reuse and establishes a relationship between classes.
Types of Inheritance in C++
- Single Inheritance: A child class inherits from one parent class.
- Multilevel Inheritance: A child class inherits from a parent class, and another class inherits from the child class.
- Multiple Inheritance: A child class inherits from multiple parent classes.
- Hierarchical Inheritance: Multiple child classes inherit from a single parent class.
1. Single Inheritance
In single inheritance, a single derived class inherits from a single base class.
Example:
#include <iostream>
class Animal {
public:
void eat() {
std::cout << "Animal is eating." << std::endl;
}
};
class Dog : public Animal {
public:
void bark() {
std::cout << "Dog is barking." << std::endl;
}
};
int main() {
Dog dog;
dog.eat(); // Inherited from Animal
dog.bark();
return 0;
}
Output:
Animal is eating.
Dog is barking.
2. Multilevel Inheritance
In multilevel inheritance, a derived class inherits from another derived class, creating a chain of inheritance.
Example:
#include <iostream>
class Animal {
public:
void eat() {
std::cout << "Animal is eating." << std::endl;
}
};
class Mammal : public Animal {
public:
void walk() {
std::cout << "Mammal is walking." << std::endl;
}
};
class Dog : public Mammal {
public:
void bark() {
std::cout << "Dog is barking." << std::endl;
}
};
int main() {
Dog dog;
dog.eat(); // Inherited from Animal
dog.walk(); // Inherited from Mammal
dog.bark();
return 0;
}
Output:
Animal is eating.
Mammal is walking.
Dog is barking.
3. Multiple Inheritance
In multiple inheritance, a single derived class inherits from two or more base classes.
Example:
#include <iostream>
class Engine {
public:
void startEngine() {
std::cout << "Engine started." << std::endl;
}
};
class Wheels {
public:
void rotateWheels() {
std::cout << "Wheels are rotating." << std::endl;
}
};
class Car : public Engine, public Wheels {
public:
void drive() {
std::cout << "Car is driving." << std::endl;
}
};
int main() {
Car car;
car.startEngine(); // Inherited from Engine
car.rotateWheels(); // Inherited from Wheels
car.drive();
return 0;
}
Output:
Engine started.
Wheels are rotating.
Car is driving.
4. Hierarchical Inheritance
In hierarchical inheritance, multiple child classes inherit from a single base class.
Example:
#include <iostream>
class Animal {
public:
void eat() {
std::cout << "Animal is eating." << std::endl;
}
};
class Dog : public Animal {
public:
void bark() {
std::cout << "Dog is barking." << std::endl;
}
};
class Cat : public Animal {
public:
void meow() {
std::cout << "Cat is meowing." << std::endl;
}
};
int main() {
Dog dog;
Cat cat;
dog.eat(); // Inherited from Animal
dog.bark();
cat.eat(); // Inherited from Animal
cat.meow();
return 0;
}
Output:
Animal is eating.
Dog is barking.
Animal is eating.
Cat is meowing.
Conclusion
Inheritance in C++ allows the creation of a relationship between classes, enabling code reuse and logical structure. The types of inheritance provide flexibility in designing class hierarchies based on the requirements of the program.