Lecture Programming in C++ - Chapter 15: Inheritance, virtual functions, and polymorphism. In this chapter, you will learn to: Create an inheritance hierarchy, use inheritance as a form of class interaction, make a virtual class, use polymorphism in an engineering program.
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 Derived class object Base class object Lesson 15.1 Defining a Base Class class Base { private: type base_priv_dat; protected: type base_prot_dat; public: type base_function_name ( ); }; Lesson 15.1 Defining a Derived Class class Derived: public Base { private: int derived_priv_dat; public: void derived_function_name ( ); }; Lesson 15.1 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 private data private data Base object private data private data protected data protected data public functions public functions public functions public 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 – overriding base class function Lesson 15.1 Comparison of Types of Class and Object Interactions Friend class object Granting class object Client class object Server class object On all examples, upper boxes represent private data members and lower boxes Composite Class represent public member functions Object Lesson 15.1 Component class object Derived class object Base class object 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 Call Derived object (value1, value2); Derived :: Derived (type derived_var, type base_var) :derived_member (derived_var), Base (base_var) Constructor Lesson 15.2 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 Planet object (no name) Celestial_body object (no name) Lesson 15.3 Earth object 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 virtual type function (type, type) = 0; Lesson 15.5 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 compiletime binding Late binding – Occurs during execution – Also called dynamic or runtime 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 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 ... Association of function call with a function Early binding – Occurs during compilation – Also called static or compiletime binding Late binding – Occurs during execution – Also called dynamic or runtime binding Lesson 15.5 Polymorphism. .. Lesson 15.5 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... 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