SlideShare a Scribd company logo
Course:Course:
Object Oriented ProgrammingObject Oriented Programming
4.00 Credit Hours, Spring 2014,4.00 Credit Hours, Spring 2014,
Undergraduate ProgramUndergraduate Program
Instructor: Sabeen JavaidInstructor: Sabeen Javaid
SESSION 1, 2SESSION 1, 2
InheritanceInheritance
InheritanceInheritance
Inheritance is a relationship between two
or more classes where derived class
inherits behaviour and attributes of pre-
existing (base) classes
Intended to help reuse of existing code
with little or no modification
2
InheritanceInheritance
The existing class is called the base class,
and the new class is called the derived
class.
Other programming languages, such as Java
and C#, refer to the base class as the
superclass
and the derived class as the subclass. A
derived class represents a more specialized
group of objects.
3
InheritanceInheritance
It is expressed in C++ by the “ : public “
syntax:
◦ class Car : public Vehicle {};
Car “is a” / “is derived from” / “is a
specialized” / “is a subclass of” / “is a
derived class of” Vehicle
Vehicle “is a base class of” / “is a super
class of” Car
4
Inheritance - ExampleInheritance - Example
5
Inheritance - ExampleInheritance - Example
6
Inheritance: is-A RelationshipInheritance: is-A Relationship
Derived class objects can always be treated
like a base class objects
Example: an object of type Student can
always be used like an object of type Person
◦ Especially, we can call all methods of Person on
an object of type Student
7
InheritanceInheritance
• Inheritance can be continuous
–Derived class can inherit from a base class
–The derived class can act as a base class and
another class can inherit from it
–If you change the base class, all derived classes
also change
–Any changes in the derived class do not change
the base class
–All features of the base class are available in the
derived class
• However, the additional features in the derived class
are not available in the base class
8
9
Base Classes and Derived Classes
10
CommunityMember Class Hierarchy
11
Shape Class Hierarchy
12
Inheritance
a
b
Class A
Features: a,b
c
Class B
Features: a,b,c
d
e
Class C
Features: a,b,d,e
f
Class D
Features: a,b,d,e,f
Inheritance and EncapsulationInheritance and Encapsulation
Three levels of access control
◦ Public: members (data and methods) can be
used by the class and everybody else (other
classes, functions, etc.)
◦ Protected: members can be accessed by the
class (and its friends) and its derived classes
◦ Private: members can be accessed only by the
class (and its friends)
Remark: without inheritance private and
protected are the same
Inheritance and EncapsulationInheritance and Encapsulation
• private member
– Is accessible only via the base class
• public member
– Is accessible everywhere (base class, derived
class, other classes)
• protected member
– Is accessible by the base class and derived classes
15
Inheritance Concept
Rectangle
Triangle
Polygon
class Polygon
{
private:
int width, length;
public:
void set(int w, int
l);
};
class Rectangle{
private:
int width, length;
public:
void set(int w, int
l);
int area();
};
class Triangle{
private:
int width, length;
public:
void set(int w, int
l);
int area();
};
16
Rectangle
Triangle
Polygon
class Polygon
{
protected:
int width, length;
public:
void set(int w, int
l);
};
class Rectangle: public
Polygon
{
public:
int area();
};
class Rectangle{
protected:
int width, length;
public:
void set(int w, int
l);
int area();
Inheritance Concept
17
Rectangle
Triangle
Polygon
class Polygon
{
protected:
int width, length;
public:
void set(int w, int
l);
};
class Triangle :
public Polygon
{
public:
int area();
};
class Triangle{
protected:
int width, length;
public:
void set(int w, int
l);
int area();
Inheritance Concept
18
Inheritance Concept
Point
Circle 3D-Point
class Point
{
protected:
int x, y;
public:
void set(int a, int
b);
};
class Circle : public Point
{
private:
double r;
};
class 3D-Point: public Point
{
private:
int z;
};
x
y
x
y
r
x
y
z
class DerivedClassName : access-level BaseClassName
Declaring InheritanceDeclaring Inheritance
• Syntax:
where
–access-level specifies the type of derivation
• private by default, or
• public or
• protected (used very rarely)
• Any class can serve as a base class
–Thus a derived class can also be a base class
19
20
Class Derivation
Point
3D-Point
class Point{
protected:
int x, y;
public:
void set(int a,
int b);
};
class 3D-Point :
public Point{
private: double
z;
… …
};
class Sphere : public
3D-Point{
private: double r;
… …
};
Sphere
Point is the base class of 3D-Point, while 3D-Point is the base class of
Sphere
What to Inherit?What to Inherit?
In principle, every member of a base class
is inherited by a derived class
◦ just with different access permission
21
22
Access Control Over the Members
• Two levels of access control over
class members
– class definition
– inheritance type
class Point{
protected: int x, y;
public: void set(int
a, int b);
};
class Circle : public
Point{
… …
};
Member Access ControlMember Access Control
 There are 3 levels of member (data or methods) access control:
◦ public: members can be used by itself and the whole world; any
function can access them
◦ protected: methods (and friends) of itself and any derived class can
use it
◦ private: members can only be used by its own methods (and its
friends)
 We’ll study friend functions later
 Without inheritance, private and protected have the same
meaning
 The only difference is that methods of a derived class can access
protected members of a base class, but cannot access private
members of a base class
23
24
Access Rights of Derived ClassesAccess Rights of Derived Classes
• Public inheritance preserves the original accessibility
of the base class public and protected members in the
derived class
– (base) public -> (derived) public
– (base) protected -> (derived) protected
– (base) private -> no access
• Protected inheritance causes public members to
become protected (protected members are preserved)
in the derived class
– (base) public -> (derived) protected
– (base) protected -> (derived) protected
– (base) private -> no access
25
Access Rights of Derived ClassesAccess Rights of Derived Classes
• Private inheritance causes all members to become
private in the derived class
– (base) public -> (derived) private
– (base) protected -> (derived) private
– (base) private -> no access
Access Rights of Derived Classes -Access Rights of Derived Classes -
SummarySummary
 The type of inheritance defines the minimum access level for the
members of derived class that are inherited from the base class
 With public inheritance, the derived class follows the same access
permission as in the base class
 With protected inheritance, only the public members inherited from
the base class can be accessed in the derived class as protected
members
 With private inheritance, all members from the base class are inherited
as private. This means private members stay private, and protected and
public members become private.
private protected public
private private private private
protected private protected protected
public private protected public
Type of Inheritance
AccessControl
forMembers
Access Rights of Derived ClassesAccess Rights of Derived Classes
 Take these classes as examples:
  class B                    { /*...*/ };
 class D_priv : private   B { /*...*/ };
 class D_prot : protected B { /*...*/ };
 class D_publ : public    B { /*...*/ };
 class UserClass          { B b; /*...*/ 
}; 
 None of the derived classes can access anything that is private in B
 In D_priv, the public and protected parts of B are private
 In D_prot, the public and protected parts of B are protected
 In D_publ, the public parts of B are public and the protected parts
of B are protected (D_publ is-a-kind-of-a B)
 class UserClass can access only the public parts of B, which "seals
off" UserClass from B
27
28
protected vs. private
So why not always use protected instead of private?
– Because protected means that we have less encapsulation
– All derived classes can access protected data members of the
base class
– Assume that later you decided to change the implementation of
the base class having the protected data members
– For example, we might want to represent address by a new
class called Address instead of string
– If the address data member is private, we can easily make this
change
– The class documentation does not need to be changed.
– If it is protected, we have to go through all derived classes and
change them
– We also need to update the class documentation.
29
When to use Private InheritanceWhen to use Private Inheritance
• Overall private and protected inheritance are used very
rarely
• Private and protected inheritance are used to represent
implementation details
• Protected bases are useful in class hierarchies in which
further derivation is needed
• Private bases are useful when defining a class by
restricting the interface to a base so that stronger
guarantees can be provided
30
Class Derivation Example
mother
daughter son
class mother{
protected:
   int x, y;
public:
  void set(int a, 
int b);
private:
   int z;
};
class daughter : 
public mother{
private: 
double a;
public:
void foo ( );
};
void daughter :: foo ( ){
x = y = 20;
set(5, 10); 
cout<<“value of a 
”<<a<<endl; 
z = 100;    // error, a 
private member
};
daughter can access 3 of the 4 inherited members
Class DerivationClass Derivation
mother
daughter son
class mother{
protected:
int x, y;
public:
void set(int a, int b);
private:
int z;
}
class son : protected mother{
private:
double b;
public:
void foo ( );
}
void son :: foo ( ){
x = y = 20;
set(5, 10);
cout<<“value of b ”<<b<<endl;
z = 100; // error, not a public
member
}
son can access only 3 of the 4 inherited member
32
mother
daughter son
granddaughter grandson
Class Derivation Example
class mother{
protected:
   int x, y;
public:
  void set(int a, 
int b);
private:
   int z;
};
class daughter : public mother
{
private: 
double a;
public:
void foo ( );
};
class granddaughter : public daughter
{
public:
void foo ( );
};
33
void granddaughter :: foo ( ){
x = y = 20; //OK
set(5, 10);  //OK
cout<<“value of a ”<<a<<endl; //error: private 
member of daughter
z = 100;    // error, a private member of mother
};
Class Derivation Example
34
mother
daughter son
granddaughter grandson
class mother{
protected:
int x, y;
public:
void set(int a,
int b);
private:
int z;
};
class son : protected mother
{
private:
double b;
public:
void foo ( );
};
class grandson : public son
{
public:
void foo ( );
};
Class Derivation Example
35
void grandson:: foo ( ){
x = y = 20;
set(5, 10);
z = 100; // error, a private member of
mother
};
Class Derivation Example
EncapsulationEncapsulation
class Figure
{
protected:
int x, y;
};
class Circle : public Figure
{
public:
int radius;
};
int main()
{
Circle a;
a.x = 0;
a.y = 0;
a.radius = 10;
}
EncapsulationEncapsulation
class Figure
{
protected:
int x_, y_;
};
class Circle : public
Figure
{
private:
int radius_;
public:
Circle(int x,
int y, int radius);
};
Circle::Circle(int x,
int y, int radius)
{
x_ = x;
y_ = y;
radius_ = radius;
}
int main()
{
Circle a(0,0,10);
}
EncapsulationEncapsulation
class Figure
{
private:
int x_, y_;
};
class Circle : public
Figure
{
private:
int radius_;
public:
Circle(int x,
int y, int radius);
};
Circle::Circle(int x,
int y, int radius)
{
x_ = x;
y_ = y;
radius_ = radius;
}
int main()
{
Circle a(0,0,10);
}
EncapsulationEncapsulation
class Figure
{
private:
int x_, y_;
public:
void SetX(int
x);
void SetY(int
y);
};
void Figure::SetX(int
x)
{
x_ = x;
}
void Figure::SetY(int
y)
{
y_ = y;
class Circle : public
Figure
{
private:
int radius_;
public:
Circle(int x, int
y, int radius);
};
Circle::Circle(int x,
int y, int radius)
{
SetX(x);
SetY(y);
radius_ = radius;
}
int main()
{
Circle a(0,0,10);
}
What to Inherit?What to Inherit?
In principle, every member of a base class
is inherited by a derived class
◦ just with different access permission
However, there are exceptions for
◦ Constructor and destructor
◦ Overloaded Assignment operator
◦ Friends
Since all these functions are class-specific!
40
References/ Compulsory ReadingReferences/ Compulsory Reading
C++, How to Program Deitel & Deitel
◦ Chapter 12: OOP : Inheritance
Robert Lafore
◦ Chapter 9: Inheritance
◦ http://www.learncpp.com/cpp-tutorial/115-inheri
41

More Related Content

What's hot (20)

PDF
Inheritance
Prof. Dr. K. Adisesha
 
PPTX
Inheritance
Tech_MX
 
PPTX
C++ Object Oriented Programming
Gamindu Udayanga
 
PPTX
Inheritance in c++
Paumil Patel
 
PPTX
Java interface
Md. Tanvir Hossain
 
PPTX
C# Access modifiers
Prem Kumar Badri
 
PPT
Inheritance in java
Lovely Professional University
 
PPTX
Multiple inheritance in c++
Sujan Mia
 
PPTX
C# Inheritance
Prem Kumar Badri
 
PDF
04. constructor & destructor
Haresh Jaiswal
 
PPTX
Virtual base class
Tech_MX
 
PDF
Operator overloading
Pranali Chaudhari
 
PPTX
Inheritance in OOPS
Ronak Chhajed
 
PDF
Polymorphism in oop
MustafaIbrahimy
 
PPTX
Inheritance in c++
Vineeta Garg
 
PDF
Inheritance In Java
Arnab Bhaumik
 
PPT
Inheritance
poonam.rwalia
 
PPTX
Java packages
BHUVIJAYAVELU
 
PPTX
Static Data Members and Member Functions
MOHIT AGARWAL
 
PPTX
Inheritance in JAVA PPT
Pooja Jaiswal
 
Inheritance
Tech_MX
 
C++ Object Oriented Programming
Gamindu Udayanga
 
Inheritance in c++
Paumil Patel
 
Java interface
Md. Tanvir Hossain
 
C# Access modifiers
Prem Kumar Badri
 
Inheritance in java
Lovely Professional University
 
Multiple inheritance in c++
Sujan Mia
 
C# Inheritance
Prem Kumar Badri
 
04. constructor & destructor
Haresh Jaiswal
 
Virtual base class
Tech_MX
 
Operator overloading
Pranali Chaudhari
 
Inheritance in OOPS
Ronak Chhajed
 
Polymorphism in oop
MustafaIbrahimy
 
Inheritance in c++
Vineeta Garg
 
Inheritance In Java
Arnab Bhaumik
 
Inheritance
poonam.rwalia
 
Java packages
BHUVIJAYAVELU
 
Static Data Members and Member Functions
MOHIT AGARWAL
 
Inheritance in JAVA PPT
Pooja Jaiswal
 

Viewers also liked (20)

PPTX
Inheritance
Sapna Sharma
 
PPT
Oops ppt
abhayjuneja
 
PPT
Object Oriented Programming Concepts
thinkphp
 
PPT
Inheritance and Polymorphism
BG Java EE Course
 
PPT
Java: Inheritance
Tareq Hasan
 
PPT
Java Programming - Inheritance
Oum Saokosal
 
PPT
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
cprogrammings
 
PPTX
Inheritance in C++
Laxman Puri
 
PPTX
Constructors & destructors
ForwardBlog Enewzletter
 
PPT
Object oriented programming (oop) cs304 power point slides lecture 01
Adil Kakakhel
 
PPT
C++ Inheritance
Jussi Pohjolainen
 
PPT
Chapter 12
Terry Yoast
 
PPTX
Hybrid Inheritance in C++
Abhishek Pratap
 
PPTX
Automation patterns on practice
automated-testing.info
 
PDF
Архитектура автоматизированных тестов
SQALab
 
PPTX
Demultiplexer presentation
Shaikat Saha
 
PPT
INPUT BOX- VBA
ViVek Patel
 
PPTX
Object oriented programming concepts
rahuld115
 
PPTX
Debugging
nicky_walters
 
PPT
Dotnet framework
Nitu Pandey
 
Inheritance
Sapna Sharma
 
Oops ppt
abhayjuneja
 
Object Oriented Programming Concepts
thinkphp
 
Inheritance and Polymorphism
BG Java EE Course
 
Java: Inheritance
Tareq Hasan
 
Java Programming - Inheritance
Oum Saokosal
 
Inheritance in c++ ppt (Powerpoint) | inheritance in c++ ppt presentation | i...
cprogrammings
 
Inheritance in C++
Laxman Puri
 
Constructors & destructors
ForwardBlog Enewzletter
 
Object oriented programming (oop) cs304 power point slides lecture 01
Adil Kakakhel
 
C++ Inheritance
Jussi Pohjolainen
 
Chapter 12
Terry Yoast
 
Hybrid Inheritance in C++
Abhishek Pratap
 
Automation patterns on practice
automated-testing.info
 
Архитектура автоматизированных тестов
SQALab
 
Demultiplexer presentation
Shaikat Saha
 
INPUT BOX- VBA
ViVek Patel
 
Object oriented programming concepts
rahuld115
 
Debugging
nicky_walters
 
Dotnet framework
Nitu Pandey
 
Ad

Similar to Inheritance, Object Oriented Programming (20)

PPT
11 Inheritance.ppt
LadallaRajKumar
 
PPT
Inheritance in C++
RAJ KUMAR
 
PPTX
Introduction to Inheritance
Keshav Vaswani
 
PPTX
Inheritance
Munsif Ullah
 
PPT
Inheritance in C++
Shweta Shah
 
PPT
MODULE2_INHERITANCE_SESSION1.ppt computer
ssuser6f3c8a
 
PPT
inheritance
Amir_Mukhtar
 
PPT
session 24_Inheritance.ppt
NAVANEETCHATURVEDI2
 
PPT
week14 (1).ppt
amal68766
 
PPTX
Lecture 5.mte 407
rumanatasnim415
 
PDF
Chapter25 inheritance-i
Deepak Singh
 
PPT
Overview of Object Oriented Programming using C++
jayanthi699330
 
PPTX
Object oriented programming new syllabus presentation
iqraamjad1405
 
PPTX
Inheritance
pooja_doshi
 
PPT
Inheritance OOP Concept in C++.
MASQ Technologies
 
PPTX
EASY TO LEARN INHERITANCE IN C++
Nikunj Patel
 
PPTX
inheritance_OOPC_datastream.ppttttttttttttttx
SanskritiGupta39
 
PPT
OOP
karan saini
 
PPT
Lecturespecial
karan saini
 
PPTX
B.sc CSIT 2nd semester C++ Unit5
Tekendra Nath Yogi
 
11 Inheritance.ppt
LadallaRajKumar
 
Inheritance in C++
RAJ KUMAR
 
Introduction to Inheritance
Keshav Vaswani
 
Inheritance
Munsif Ullah
 
Inheritance in C++
Shweta Shah
 
MODULE2_INHERITANCE_SESSION1.ppt computer
ssuser6f3c8a
 
inheritance
Amir_Mukhtar
 
session 24_Inheritance.ppt
NAVANEETCHATURVEDI2
 
week14 (1).ppt
amal68766
 
Lecture 5.mte 407
rumanatasnim415
 
Chapter25 inheritance-i
Deepak Singh
 
Overview of Object Oriented Programming using C++
jayanthi699330
 
Object oriented programming new syllabus presentation
iqraamjad1405
 
Inheritance
pooja_doshi
 
Inheritance OOP Concept in C++.
MASQ Technologies
 
EASY TO LEARN INHERITANCE IN C++
Nikunj Patel
 
inheritance_OOPC_datastream.ppttttttttttttttx
SanskritiGupta39
 
Lecturespecial
karan saini
 
B.sc CSIT 2nd semester C++ Unit5
Tekendra Nath Yogi
 
Ad

Recently uploaded (20)

PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PPTX
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
SciPy 2025 - Packaging a Scientific Python Project
Henry Schreiner
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
Tally_Basic_Operations_Presentation.pptx
AditiBansal54083
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Import Data Form Excel to Tally Services
Tally xperts
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 

Inheritance, Object Oriented Programming

  • 1. Course:Course: Object Oriented ProgrammingObject Oriented Programming 4.00 Credit Hours, Spring 2014,4.00 Credit Hours, Spring 2014, Undergraduate ProgramUndergraduate Program Instructor: Sabeen JavaidInstructor: Sabeen Javaid SESSION 1, 2SESSION 1, 2 InheritanceInheritance
  • 2. InheritanceInheritance Inheritance is a relationship between two or more classes where derived class inherits behaviour and attributes of pre- existing (base) classes Intended to help reuse of existing code with little or no modification 2
  • 3. InheritanceInheritance The existing class is called the base class, and the new class is called the derived class. Other programming languages, such as Java and C#, refer to the base class as the superclass and the derived class as the subclass. A derived class represents a more specialized group of objects. 3
  • 4. InheritanceInheritance It is expressed in C++ by the “ : public “ syntax: ◦ class Car : public Vehicle {}; Car “is a” / “is derived from” / “is a specialized” / “is a subclass of” / “is a derived class of” Vehicle Vehicle “is a base class of” / “is a super class of” Car 4
  • 7. Inheritance: is-A RelationshipInheritance: is-A Relationship Derived class objects can always be treated like a base class objects Example: an object of type Student can always be used like an object of type Person ◦ Especially, we can call all methods of Person on an object of type Student 7
  • 8. InheritanceInheritance • Inheritance can be continuous –Derived class can inherit from a base class –The derived class can act as a base class and another class can inherit from it –If you change the base class, all derived classes also change –Any changes in the derived class do not change the base class –All features of the base class are available in the derived class • However, the additional features in the derived class are not available in the base class 8
  • 9. 9 Base Classes and Derived Classes
  • 12. 12 Inheritance a b Class A Features: a,b c Class B Features: a,b,c d e Class C Features: a,b,d,e f Class D Features: a,b,d,e,f
  • 13. Inheritance and EncapsulationInheritance and Encapsulation Three levels of access control ◦ Public: members (data and methods) can be used by the class and everybody else (other classes, functions, etc.) ◦ Protected: members can be accessed by the class (and its friends) and its derived classes ◦ Private: members can be accessed only by the class (and its friends) Remark: without inheritance private and protected are the same
  • 14. Inheritance and EncapsulationInheritance and Encapsulation • private member – Is accessible only via the base class • public member – Is accessible everywhere (base class, derived class, other classes) • protected member – Is accessible by the base class and derived classes
  • 15. 15 Inheritance Concept Rectangle Triangle Polygon class Polygon { private: int width, length; public: void set(int w, int l); }; class Rectangle{ private: int width, length; public: void set(int w, int l); int area(); }; class Triangle{ private: int width, length; public: void set(int w, int l); int area(); };
  • 16. 16 Rectangle Triangle Polygon class Polygon { protected: int width, length; public: void set(int w, int l); }; class Rectangle: public Polygon { public: int area(); }; class Rectangle{ protected: int width, length; public: void set(int w, int l); int area(); Inheritance Concept
  • 17. 17 Rectangle Triangle Polygon class Polygon { protected: int width, length; public: void set(int w, int l); }; class Triangle : public Polygon { public: int area(); }; class Triangle{ protected: int width, length; public: void set(int w, int l); int area(); Inheritance Concept
  • 18. 18 Inheritance Concept Point Circle 3D-Point class Point { protected: int x, y; public: void set(int a, int b); }; class Circle : public Point { private: double r; }; class 3D-Point: public Point { private: int z; }; x y x y r x y z
  • 19. class DerivedClassName : access-level BaseClassName Declaring InheritanceDeclaring Inheritance • Syntax: where –access-level specifies the type of derivation • private by default, or • public or • protected (used very rarely) • Any class can serve as a base class –Thus a derived class can also be a base class 19
  • 20. 20 Class Derivation Point 3D-Point class Point{ protected: int x, y; public: void set(int a, int b); }; class 3D-Point : public Point{ private: double z; … … }; class Sphere : public 3D-Point{ private: double r; … … }; Sphere Point is the base class of 3D-Point, while 3D-Point is the base class of Sphere
  • 21. What to Inherit?What to Inherit? In principle, every member of a base class is inherited by a derived class ◦ just with different access permission 21
  • 22. 22 Access Control Over the Members • Two levels of access control over class members – class definition – inheritance type class Point{ protected: int x, y; public: void set(int a, int b); }; class Circle : public Point{ … … };
  • 23. Member Access ControlMember Access Control  There are 3 levels of member (data or methods) access control: ◦ public: members can be used by itself and the whole world; any function can access them ◦ protected: methods (and friends) of itself and any derived class can use it ◦ private: members can only be used by its own methods (and its friends)  We’ll study friend functions later  Without inheritance, private and protected have the same meaning  The only difference is that methods of a derived class can access protected members of a base class, but cannot access private members of a base class 23
  • 24. 24 Access Rights of Derived ClassesAccess Rights of Derived Classes • Public inheritance preserves the original accessibility of the base class public and protected members in the derived class – (base) public -> (derived) public – (base) protected -> (derived) protected – (base) private -> no access • Protected inheritance causes public members to become protected (protected members are preserved) in the derived class – (base) public -> (derived) protected – (base) protected -> (derived) protected – (base) private -> no access
  • 25. 25 Access Rights of Derived ClassesAccess Rights of Derived Classes • Private inheritance causes all members to become private in the derived class – (base) public -> (derived) private – (base) protected -> (derived) private – (base) private -> no access
  • 26. Access Rights of Derived Classes -Access Rights of Derived Classes - SummarySummary  The type of inheritance defines the minimum access level for the members of derived class that are inherited from the base class  With public inheritance, the derived class follows the same access permission as in the base class  With protected inheritance, only the public members inherited from the base class can be accessed in the derived class as protected members  With private inheritance, all members from the base class are inherited as private. This means private members stay private, and protected and public members become private. private protected public private private private private protected private protected protected public private protected public Type of Inheritance AccessControl forMembers
  • 27. Access Rights of Derived ClassesAccess Rights of Derived Classes  Take these classes as examples:   class B                    { /*...*/ };  class D_priv : private   B { /*...*/ };  class D_prot : protected B { /*...*/ };  class D_publ : public    B { /*...*/ };  class UserClass          { B b; /*...*/  };   None of the derived classes can access anything that is private in B  In D_priv, the public and protected parts of B are private  In D_prot, the public and protected parts of B are protected  In D_publ, the public parts of B are public and the protected parts of B are protected (D_publ is-a-kind-of-a B)  class UserClass can access only the public parts of B, which "seals off" UserClass from B 27
  • 28. 28 protected vs. private So why not always use protected instead of private? – Because protected means that we have less encapsulation – All derived classes can access protected data members of the base class – Assume that later you decided to change the implementation of the base class having the protected data members – For example, we might want to represent address by a new class called Address instead of string – If the address data member is private, we can easily make this change – The class documentation does not need to be changed. – If it is protected, we have to go through all derived classes and change them – We also need to update the class documentation.
  • 29. 29 When to use Private InheritanceWhen to use Private Inheritance • Overall private and protected inheritance are used very rarely • Private and protected inheritance are used to represent implementation details • Protected bases are useful in class hierarchies in which further derivation is needed • Private bases are useful when defining a class by restricting the interface to a base so that stronger guarantees can be provided
  • 30. 30 Class Derivation Example mother daughter son class mother{ protected:    int x, y; public:   void set(int a,  int b); private:    int z; }; class daughter :  public mother{ private:  double a; public: void foo ( ); }; void daughter :: foo ( ){ x = y = 20; set(5, 10);  cout<<“value of a  ”<<a<<endl;  z = 100;    // error, a  private member }; daughter can access 3 of the 4 inherited members
  • 31. Class DerivationClass Derivation mother daughter son class mother{ protected: int x, y; public: void set(int a, int b); private: int z; } class son : protected mother{ private: double b; public: void foo ( ); } void son :: foo ( ){ x = y = 20; set(5, 10); cout<<“value of b ”<<b<<endl; z = 100; // error, not a public member } son can access only 3 of the 4 inherited member
  • 32. 32 mother daughter son granddaughter grandson Class Derivation Example class mother{ protected:    int x, y; public:   void set(int a,  int b); private:    int z; }; class daughter : public mother { private:  double a; public: void foo ( ); }; class granddaughter : public daughter { public: void foo ( ); };
  • 34. 34 mother daughter son granddaughter grandson class mother{ protected: int x, y; public: void set(int a, int b); private: int z; }; class son : protected mother { private: double b; public: void foo ( ); }; class grandson : public son { public: void foo ( ); }; Class Derivation Example
  • 35. 35 void grandson:: foo ( ){ x = y = 20; set(5, 10); z = 100; // error, a private member of mother }; Class Derivation Example
  • 36. EncapsulationEncapsulation class Figure { protected: int x, y; }; class Circle : public Figure { public: int radius; }; int main() { Circle a; a.x = 0; a.y = 0; a.radius = 10; }
  • 37. EncapsulationEncapsulation class Figure { protected: int x_, y_; }; class Circle : public Figure { private: int radius_; public: Circle(int x, int y, int radius); }; Circle::Circle(int x, int y, int radius) { x_ = x; y_ = y; radius_ = radius; } int main() { Circle a(0,0,10); }
  • 38. EncapsulationEncapsulation class Figure { private: int x_, y_; }; class Circle : public Figure { private: int radius_; public: Circle(int x, int y, int radius); }; Circle::Circle(int x, int y, int radius) { x_ = x; y_ = y; radius_ = radius; } int main() { Circle a(0,0,10); }
  • 39. EncapsulationEncapsulation class Figure { private: int x_, y_; public: void SetX(int x); void SetY(int y); }; void Figure::SetX(int x) { x_ = x; } void Figure::SetY(int y) { y_ = y; class Circle : public Figure { private: int radius_; public: Circle(int x, int y, int radius); }; Circle::Circle(int x, int y, int radius) { SetX(x); SetY(y); radius_ = radius; } int main() { Circle a(0,0,10); }
  • 40. What to Inherit?What to Inherit? In principle, every member of a base class is inherited by a derived class ◦ just with different access permission However, there are exceptions for ◦ Constructor and destructor ◦ Overloaded Assignment operator ◦ Friends Since all these functions are class-specific! 40
  • 41. References/ Compulsory ReadingReferences/ Compulsory Reading C++, How to Program Deitel & Deitel ◦ Chapter 12: OOP : Inheritance Robert Lafore ◦ Chapter 9: Inheritance ◦ http://www.learncpp.com/cpp-tutorial/115-inheri 41