13.1 Introduction 面向对象 °数据封装 °继承 多态 0 2018, SEU. All rights reserved. 6
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 6 面向对象 数据封装 继承 多态 13.1 Introduction
13.1 Introduction 多态: 解释1:同样的消息被类的不同对象接收时导致的完全 不同的行为的一种现象。这里所说的消息即对类的成 员函数的调用。 解释2:通过指向派生类的基类指针,调用派生类的函 数;将不同的派生类对象都当作基类来处理,并根据对 象不同产生不同的行为,以屏蔽各派生类对象之间的 差异。写出通用的代码,使得程序员可以方便地处理 普遍性问题。 C++语言支持两种类型的多态: ①编译时的多态(静态多态)——函数重载 ②运行时的多态(动态多态)——虚函数 多态性提高了软件的可扩展性,使得可以用与接 收消息对象类型无关的方式编写 0 2018, SEU. All rights reserved. 7
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 7 13.1 Introduction 多态: 解释1:同样的消息被类的不同对象接收时导致的完全 不同的行为的一种现象。这里所说的消息即对类的成 员函数的调用。 解释2:通过指向派生类的基类指针,调用派生类的函 数; 将不同的派生类对象都当作基类来处理,并根据对 象不同产生不同的行为,以屏蔽各派生类对象之间的 差异。写出通用的代码,使得程序员可以方便地处理 普遍性问题。 C++语言支持两种类型的多态: ① 编译时的多态(静态多态) ——函数重载 ② 运行时的多态(动态多态) ——虚函数 多态性提高了软件的可扩展性,使得可以用与接 收消息对象类型无关的方式编写
Topics 13.1 Introduction o 13.2 Relationships Among Objects in an Inheritance Hierarch 13.3 Type Fields and switch Statements 13. 4 Abstract Classes and pure virtual functions o 13.5 Case Study: Payroll System Using Polymorphism 0 2018, SEU. All rights reserved. 8
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 8 Topics 13.1 Introduction 13.2 Relationships Among Objects in an Inheritance Hierarchy 13.3 Type Fields and switch Statements 13.4 Abstract Classes and Pure virtual Functions 13.5 Case Study: Payroll System Using Polymorphism
13.2 Relationships Among Objects in an Inheritance hierarch 13.2.1 Invoking Base-Class Functions from Derived Class objects(基类指针指向派生类,调用基类函数) o 13.2.2 Aiming Derived-Class Pointers at Base-Class Objects(派生类指针指向基类,错误) o 13.23 Derived-Class Member-Function Calls via Base Class pointers(基类指针指向派生类,调用派生类函数, 错误) °13.24 Virtua| Functions(应用虚函数,解决上述问题) 13.2.5 Summary of the allowed Assignments Between Base-Class and derived -class objects and pointers (基类/派生类对象和指针之间的赋值) 0 2018, SEU. All rights reserved. 9
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 9 13.2 Relationships Among Objects in an Inheritance Hierarchy 13.2.1 Invoking Base-Class Functions from DerivedClass Objects(基类指针指向派生类,调用基类函数) 13.2.2 Aiming Derived-Class Pointers at Base-Class Objects(派生类指针指向基类,错误) 13.2.3 Derived-Class Member-Function Calls via BaseClass Pointers(基类指针指向派生类,调用派生类函数, 错误) 13.2.4 Virtual Functions(应用虚函数,解决上述问题) 13.2.5 Summary of the Allowed Assignments Between Base-Class and Derived-Class Objects and Pointers (基类/派生类对象和指针之间的赋值)
13.2.1 Invoking Base-Class Functions from Derived-Class Objects °基类 Commission Employee void printO const °派生类 Base Plus Commission Employee void print( const commissionEmployeePtr &basePlus CommissionEmployee 注意:基类指针调用函数,输出什么 程序 P13.1-5 0 2018, SEU. All rights reserved. 10
© 2009, SEU. All rights reserved. © 2018, SEU. All rights reserved. 10 13.2.1 Invoking Base-Class Functions from Derived-Class Objects 基类CommissionEmployee void print() const; 派生类BasePlusCommissionEmployee void print() const; commissionEmployeePtr = &basePlusCommissionEmployee; 注意:基类指针调用函数,输出什么