1. Trang chủ
  2. » Công Nghệ Thông Tin

Lecture Programming in C++ - Chapter 15: Inheritance, virtual functions, and polymorphism

21 65 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 500,65 KB

Nội dung

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 – over­riding 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 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 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 compile­time binding Late binding – Occurs during execution – Also called dynamic or run­time 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 

Ngày đăng: 30/01/2020, 01:59

TỪ KHÓA LIÊN QUAN