Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 15 – Inheritance, Virtual Functions, and Polymorphism

Similar presentations


Presentation on theme: "Chapter 15 – Inheritance, Virtual Functions, and Polymorphism"— Presentation transcript:

1 Chapter 15 – Inheritance, Virtual Functions, and Polymorphism

2 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

3 Image of base class object creation when derived class object instantiated
Lesson 15.1

4 Defining a Base Class class Base { private: type base_priv_dat; protected: type base_prot_dat; public: type base_function_name ( ); }; Lesson 15.1

5 Defining a Derived Class
class Derived: public Base { private: int derived_priv_dat; public: void derived_function_name ( ); }; Lesson 15.1

6 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

7 Relationship Between Base and Derived Objects
Base object private data private data protected data public functions public functions derived_object.derived_function( ) derived_object.base_function( )

8 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

9 Comparison of Types of Class and Object Interactions
Client class object Server class Friend class object Granting class On all examples, upper boxes represent private data members and lower boxes represent public member functions. Derived class object Base class object Component class object Composite Class Object Lesson 15.1

10 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 Lesson 15.1

11 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

12 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

13 Explicit Call to Base Class Constructor
Derived object (value1, value2); Derived :: Derived (type derived_var, type base_var) :derived_member (derived_var), Base (base_var) Constructor Lesson 15.2

14 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

15 Effect of Inheritance Levels
Object for lowest level class contains sub-objects of all other classes Planet object (no name) Celestial_body object (no name) Earth object Lesson 15.3

16 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

17 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 virtual type function (type, type) = 0; Lesson 15.5

18 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

19 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

20 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

21 Summary Learned how to: Create an inheritance hierarchy
Use inheritance as a form of class interaction Make a virtual class Use polymorphism in an engineering program


Download ppt "Chapter 15 – Inheritance, Virtual Functions, and Polymorphism"

Similar presentations


Ads by Google