INHERITANCE IN C++
WHAT IS AN INHERTANCE?
Inheritance is the process by which new classes called derived
classes are created from existing classes called base classes.
The derived classes have all the features of the base class and the
programmer can choose to add new features specific to the newly
created derived class.
The idea of inheritance implements the is a relationship. For
example, mammal IS-A animal, dog IS-A mammal hence dog IS-A
animal as well and so on.
WHAT IS AN INHERTANCE? contd…
All mammals have
MAMMAL certain characteristics.
Dog is a mammal. It has all features of Cat is a mammal. It has all features of
mammals in addition to its own unique mammals in addition to its own unique
features features
FEATURES /ADVANTAGES OF
INHERITANCE
Reusability of Code
Saves Time and Effort
Faster development, easier maintenance and easy
to extend
Capable of expressing the inheritance relationship
and its transitive nature which ensures closeness
with real world problems .
SYNTAX
To create a derived class from an already existing base class the syntax
is:
class derived-class: access-specifier base-class
{
….
Where access specifier is one of public, protected, or private.
SYNTAX contd……
For example, if the base class is animals and In this example class amphibians
the derived class is amphibians it is specified have access to both public and
as: protected members of base class
animals.
class animals //base class
NOTE: A class can be derived from
{
more than one class, which means it
can inherit data and functions from
……. multiple base classes. In that case a
}; class derivation lists names of one
or more base classes each
class amphibians : public animals separated by comma.
{ //derived class
…..
};
ACCESS CONTROL AND INHERITENCE
A derived class can access all the protected and public members of its base class.
It can not access private members of the base class.
PUBLIC
BASE CLASS
PROTECTED
PRIVATE
CHILD CLASS
CAN NOT BE INHERITED
ACCESS CONTROL AND INHERITENCE contd…
We can summarize the different access types according to who can access them in
the following way:
Access public protected private
Same class yes yes yes
Derived classes yes yes no
Outside classes yes no no
NOTE: Constructors and destructors of the base class are never inherited.
VISIBILTY MODES AND INHERITANCE
A child class can inherit base class in three ways. These are:
PRIVATE PROTECTED PUBLIC
PRIVATE NOT Become private Become private
INHERITED of child class of child class
PROTECTED NOT Become protected Become protected
INHERITED members of child class members of child class
PUBLIC NOT Become protected Become public members
INHERITED members of child class of child class
BASE BASE BASE
CLASS CLASS CLASS
PRIVATE PRIVATE PRIVATE
PROTECTED PROTECTED PROTECTED
PUBLIC PUBLIC PUBLIC
PUBLIC PUBLIC PUBLIC
PROTECTED PROTECTED PROTECTED
PRIVATE PRIVATE PRIVATE
CHILD CHILD CHILD
CLASS CLASS CLASS
PRIVATE INHERTANCE PROTECTED INHERITANCE PUBLIC INHERITANCE
PRIVATE INHERITANCE
In private inheritance protected and public members of the base class become the
private members of the derived class.
class child
{
private:
class base class child : private base int x;
{ { void funcx();
Protected members
private: private: int b;
inherited from base
int a; int x; void funcb(); class
void funca(); Private void funcx(); int c;
Public members
protected: inheritance protected: void funcc(); inherited from base
int b; int y; protected: class
void funcb(); void funcy(); int y;
public: public: void funcy();
int c; int z; public:
void funcc(); void funcz(); int z;
} } void funcz();
}
New child class after inheritance
PROTECTED INHERITANCE
In protected inheritance protected and public members of the base class become the
protected members of the derived class.
class child
{
private:
class base class child : protected base int x;
{ { void funcx();
private: private: protected:
int a; int x; int y;
void funca(); Protected void funcx(); void funcy();
int b; Protected members
protected: inheritance protected: inherited from base
int b; int y; void funcb(); class
void funcb(); void funcy(); int c;
void funcc(); Public members
public: public: inherited from base
int c; int z; public: class
void funcc(); void funcz(); int z;
} } void funcz();
}
New child class after inheritance
PUBLIC INHERITANCE
In protected inheritance protected members become the protected members of the base class and
public members of the base class become the public members of the derived class.
class child
{
private:
class base class child : public base int x;
{ { void funcx();
private: private: protected:
int a; int x; int y;
void funca(); Public void funcx(); void funcy();
int b; Protected members
protected: inheritance protected: inherited from base
int b; int y; void funcb(); class
void funcb(); void funcy(); public:
public: public: int z;
int c; int z; void funcz();
void funcc(); void funcz(); int c; Public members
inherited from base
} } void funcc();
class
}
New child class after inheritance
TYPES OF INHERITANCE
There are five different types of inheritance:
1. Single Inheritance
2. Multiple Inheritance
3. Multilevel Inheritance
4. Hierarchical Inheritance
5. Hybrid Inheritance
SINGLE INHERITENCE
Single inheritance is the one where you have a single base
class and a single derived class.
STUDENT
EXAMPLE COURSE
class student
{ class course : public student
private: {
char name[20]; long course_code;
float marks; char course_name;
protected: public:
void result(); course();
public: void commence();
student(); void cdetail();
void enroll(); }
void display();
}
MULTILEVEL INHERITENCE
In Multi level inheritance, a subclass inherits from a
class that itself inherits from another class.
FURNITURE
SOFA
EXAMPLE
OFFICE
class furniture class sofa: public furniture class office: private sofa
{ { {
char type; int no_of_seats; int no_of_pieces;
char model[10]; float cost; char delivery_date[10];
public: public: public:
furniture(); void indata(); void readdetails()
void readdata(); void outdata(); void displaydetails();
void dispdata(); }; }
}
MULTIPLE INHERITENCE
In Multiple inheritances, a derived class inherits from multiple base
classes. It has properties of both the base classes.
MULTIPLE INHERITENCE CHAIRPERSON DIRECTOR
EXAMPLE
COMPANY
class chaiperson
{ class company: private
class director
long chairid; chairperson, public director
{
char name[20]; {
long directorid;
protected: int companyid;
char dname[20];
char description[20]; char city[20];
public:
void allocate(); char country[20];
director();
public: public:
void entry();
chairperson(); void ctentry();
void display();
void assign(); void ctdisplay();
};
void show(); };
};
HIERARCHICAL INHERITENCE
In hierarchical Inheritance, it's like an inverted tree. So
multiple classes inherit from a single base class.
HIERARCHICAL INHERITENCE TOYS
EXAMPLE SOFT ELECTRONIC
TOYS
TOYS
class toys
{ class softtoys: public toys class electronictoys: public
char tcode[5]; { toys
protected: chat stname[20]; {
float price; float weight; char etname[20];
void assign(float); public: int no_of_batteries;
public: softtoys(); public:
toys(); void stentry(); void etentry();
void tentry(); void stdisplay(); void etdisplay();
void tdisplay(); }; };
};
HYBRID INHERITENCE
It combines two or more types of inheritance. In this type of
inheritance we can have a mixture of number of
inheritances.
CONSTRUCTORS AND DESTRUCTORS IN
BASE AND DERIVED CLASSES
Derived classes can have their own constructors and
destructors.
When an object of a derived class is created, the base
class’s constructor is executed first, followed by the derived
class’s constructor.
When an object of a derived class goes out of scope, its
destructor is called first, then that of the base class.
IMPROTANT POINTS TO
NOTE
Calculating the size of the object of the child class:
While calculating the size of the object of the child class, add the size of all data members
of base class including the private members of the base class and the child class.
If child class is inheriting from multiple base classes, add the size of data members of all
base classes and the child class.
In case of multilevel inheritance the size of all base classes(directly /indirectly) inherited by
child class is added to the size of child class data members
Members accessible to the object of the child class:
Only public members of the new modified child class(after inheritance) are accessible to the
object of the child class.
Members accessible to the functions of the child class:
All members: public, protected, private, of the new modified child class(after inheritance)
are accessible to the functions of the child class.
PASSING ARGUMENTS TO BASE CLASS CONSTRUCTOR
If a base class has parametrized constructor then it is the duty of child class to pass the
parameters for base class constructor also at the time of creation of object.
class course : public student
class student
{
{
long course_code;
private:
char course_name[20]; Child class
char name[20];
public: constructor
float marks;
protected: Base class
course(long cc, char cn[20],char nam[20], float mar ) :
void result(); constructor
student(char nam[20], float mar);
public:
student(char nam[20], float mar);
void commence(); Base class constructor
void enroll();
void cdetail(); parameters
void display();
}
}
course c1(01,”CS”,”Naman”, 460);