chapter 15 – inheritance, virtual functions, and polymorphism
TRANSCRIPT
Chapter 15 – Inheritance, Virtual Functions, and Polymorphism
Inheritance
Name of another way in which classes and objects relate– Base class– Derived class
When object of derived class declared– Object of base class is automatically created
and contained within derived class object
Lesson 15.1
Image of base class object creation when derived class object instantiated
Lesson 15.1
Derived class object
Base class object
Defining a Base Class
Lesson 15.1
class Base { private: type base_priv_dat; protected: type base_prot_dat; public: type base_function_name ( ); };
Defining a Derived Class
Lesson 15.1
class Derived: public Base { private: int derived_priv_dat; public: void derived_function_name ( ); };
Interaction Between Base and Derived Class Objects
Private base class members are private member of base class only
Protected base class members are protected members of both derived and base classes
Public base class members are public members of derived and base classes
Derived class members convey no special access privileges to base class functions
Lesson 15.1
Relationship Between Base and Derived Objects
Derived object Base object
private dataprivate data
protected dataprotected data
public functionspublic functions
private dataprivate data
public functionspublic functions
derived_object.derived_function( )
derived_object.base_function( )
No Base Class Object Name
Use only derived object name to access both derived and base class functions
Derived class takes precedence– over-riding base class function
Lesson 15.1
Comparison of Types of Class and Object Interactions
Friend classobject
Granting class object
Client classobject
Server classobject
Componentclass object
Composite ClassObject
Derived class object Base
class objectLesson 15.1
On all examples, upper boxes representprivate data members and lower boxesrepresent public member functions.
Private and Protected Inheritance
class Derived : private Base– public and protected members of Base become
private members of Derived– private members of Base remain private to Base
class Derived : protected Base– public and protected members of Base become
public and protected member of Derived– private members of Base remain private to Base
Lesson 15.1
Order of Constructor and Destructor Function Calls
Both base and derived constructors called when derived class object instantiated
Bass class constructor called first, derived constructor second
Derived class destructor called first, base class destructor second
Order in which objects declared determines order of constructor calls
Lesson 15.2
Other Uses of Inheritance
Well suited to extending or customizing existing code
Can make full use of base class features and add specific features
Can modify base classes without requiring derived classes to be modified– Allows base classes to remain up to date
Lesson 15.1
Explicit Call to Base Class Constructor
Lesson 15.2
Derived object (value1, value2);
Derived :: Derived (type derived_var, type base_var)
:derived_member (derived_var), Base (base_var)
Call
Constructor
Effect of Inheritance Levels Object for lowest level class contains sub-
objects of all other classes Order of calling constructors is from top
down in inheritance graph Pass data one step or level at a time Functions can be overridden in any class
down inheritance graph Can assign derived class objects to base
class objects, but not reverse
Lesson 15.3
Effect of Inheritance Levels
Object for lowest level class contains sub-objects of all other classes
Lesson 15.3 Earth object
Planet object(no name)
Celestial_bodyobject
(no name)
Multiple Inheritance
Class can inherit from more than one class directly– When one class has "is a" relationship with
more than one class
Lesson 15.4
Virtual Classes
Class which we are not allowed to create independent objects
Used as base class for other classes for which we do want independent objects
C++ automatically makes class virtual when member of class is pure virtual function
Lesson 15.5
virtual type function (type, type) = 0;
Pointers and Inheritance
Can declare base class type pointer variable and assign address of derived class object
Any address of object down inheritance graph
Lesson 15.5
Binding
Association of function call with a function Early binding
– Occurs during compilation– Also called static or compile-time binding
Late binding– Occurs during execution– Also called dynamic or run-time binding
Lesson 15.5
Polymorphism
Achieved by creating and using virtual functions
Code making function call does not explicitly state which function it is calling– C++ decides during execution which is correct
function
Summary
Create an inheritance hierarchy Use inheritance as a form of class
interaction Make a virtual class Use polymorphism in an engineering
program
Learned how to: