Inheritance is one of the key features of object-oriented programming including C++ which allows user to create a new class (derived class) from a existing class (base class). The derived class inherits all features from a base class and it can have additional features of its own.
Concept of Inheritance in OOP
Concept of Inheritance in OOP
Suppose, you want to calculate either area or perimeter or diagonal length of a rectangle by taking data (length and breadth) from user. You can create three different objects (Area, Perimeter and Diagonal) and asks user to enter length and breadth in each object and calculate corresponding data. But, the better approach would be to create an additional object Rectangle to store value of length and breadth from user and derive objects Area, Perimeter and Diagonal from Rectangle base class. It is because, all three objects Area, Perimeter and Diagonal are related to object Rectangle and you don't need to ask user the input data from these three derived objects as this feature is included in base class.
Implementation of Inheritance in C++ Programming
class Rectangle
{
Implementation of Inheritance in C++ Programming
class Rectangle
{
... .. ...
};
class Area : public Rectangle
{
... .. ...
};
class Perimeter : public Rectangle
{
.... .. ...
};
In the above example, class Rectangle is a base class and classes Area and Perimeter are the derived from Rectangle. The derived class appears with the declaration of class followed by a colon, the keyword public and the name of base class from which it is derived.
Since, Area and Perimeter are derived from Rectangle, all data member and member function of base class Rectangle can be accessible from derived class.
Note: Keywords private and protected can be used in place of public while defining derived class(will be discussed later).
Source Code to Implement Inheritance in C++ Programming
This example calculates the area and perimeter a rectangle using the concept of inheritance.
This example calculates the area and perimeter a rectangle using the concept of inheritance.
/* C++ Program to calculate the area and perimeter of rectangles using concept of inheritance. */
#include <iostream>
using namespace std;
class Rectangle
{
protected:
float length, breadth;
public:
Rectangle(): length(0.0), breadth(0.0)
{
cout<<"Enter length: ";
cin>>length;
cout<<"Enter breadth: ";
cin>>breadth;
}
};
/* Area class is derived from base class Rectangle. */
class Area : public Rectangle
{
public:
float calc()
{
return length*breadth;
}
};
/* Perimeter class is derived from base class Rectangle. */
class Perimeter : public Rectangle
{
public:
float calc()
{
return 2*(length+breadth);
}
};
int main()
{
cout<<"Enter data for first rectangle to find area.\n";
cout<<"Enter data for first rectangle to find area.\n";
Area a;
cout<<"Area = "<<a.calc()<<" square meter\n\n";
cout<<"Enter data for second rectangle to find perimeter.\n";
Perimeter p;
cout<<"\nPerimeter = "<<p.calc()<<" meter";
return 0;
}
Output
Enter data for first rectangle to find area.
Enter length: 5
Enter breadth: 4
Area = 20 square meter
Enter data for second rectangle to find perimeter.
Enter length: 3
Enter breadth: 2
Area = 10 meter
Explanation of Program: In this program, classes Area and Perimeter are derived from class Rectangle. Thus, the object of derived class can access the public members of Rectangle. In this program, when objects of class Area and Perimeter are created, constructor in base class is automatically called. If there was public member function in base class then, those functions also would have been accessible for objects a and p.
Keyword protected
Explanation of Program: In this program, classes Area and Perimeter are derived from class Rectangle. Thus, the object of derived class can access the public members of Rectangle. In this program, when objects of class Area and Perimeter are created, constructor in base class is automatically called. If there was public member function in base class then, those functions also would have been accessible for objects a and p.
Keyword protected
In this program, length and breadth in the base class are protected data members. These data members are accessible from the derived class but, not accessible from outside it. This maintains the feature of data hiding in C++ programming. If you defined length and breadth as private members then, those two data are not accessible to derived class and if defined as public members, it can be accessible from both derived class and from main( ) function.
Accessbility
|
private
|
protected
|
public
|
Accessible
from own class ?
|
yes
|
yes
|
yes
|
Accessible
from dervied class ?
|
no
|
yes
|
yes
|
Accessible
outside dervied class ?
|
no
|
no
|
yes
|
Member Function Overriding in Inheritance
Suppose base class and derived class have member functions with same name and arguments. If you create an object of derived class and write code to access that member function then, the member function in derived class is only invoked, i.e., the member function of derived class overrides the member function of base class.
No comments:
Post a Comment