第12章 多态性与虚函数 12.1多态性的概念 12.2一个典型的例子 12.3虚函数 12.4纯虚函数与抽象类
第12章 多态性与虚函数 12.1 多态性的概念 12.2 一个典型的例子 12.3 虚函数 12.4 纯虚函数与抽象类
12.1多态性的 多态性(polymorphism):是面向对象程序设计的 一个重要特征。利用多态性可以设计和实现一个 易于扩展的系统 C++程序设计中的多态性 ↓ 是指具有不同功能的函 实现用一个函数名调 数可以用同一个函数名 用不同内容的函数 面向对象方法多态性的表述:向不同的对象发送同一个 消息,不同的对象在接收时会产生不同的行为(即方法) 每个对象可以用自己的方式去响应共同的消息
12.1 多态性的 多态性(polymorphism) 概念:是面向对象程序设计的 一个重要特征。利用多态性可以设计和实现一个 易于扩展的系统 C++程序设计中的多态性 是指具有不同功能的函 数可以用同一个函数名 实现用一个函数名调 用不同内容的函数 面向对象方法多态性的表述:向不同的对象发送同一个 消息,不同的对象在接收时会产生不同的行为(即方法) 每个对象可以用自己的方式去响应共同的消息
在C++程序设计中,在不同的类中定义了其响应消息的方法, 则使用这些类时,不必考虑它们是何类型,只要发布消息即可 函数重 静 状 在程序编译时系统就 态 运算符重载 能决定调用的是哪个 函数 多态性分类 又称编译时的多态性 在程序运行过程中才动态地确定 动态 操作所针对的对象,它又称运行 时的多态性 通过虚函数(virtual function)实现的 在本章中主要介绍动态多态性和虚函数
在本章中主要介绍动态多态性和虚函数。 在C++程序设计中,在不同的类中定义了其响应消息的方法, 则使用这些类时,不必考虑它们是何类型,只要发布消息即可 多态性分类 静 态 动态 函数重 载运算符重载 在程序编译时系统就 能决定调用的是哪个 函数 又称编译时的多态性 在程序运行过程中才动态地确定 操作所针对的对象,它又称运行 时的多态性 通过虚函数(virtual function)实现的
要研究的问题 当一个基类被继承为 在运行时用同一个 不同的派生类时,各 成员名调用类对象 派生类可以使用与基 的成员,会调用哪 类成员相同的成员名 个对象的成员? 与基类成员同 相关的不同 通过继承而产生 名的成员在不 的派生类 同的派生类中 有不同的含义 多态性是“一个接口,多种方法
多态性是“一个接口,多种方法” 。 要研究的问题 当一个基类被继承为 不同的派生类时,各 派生类可以使用与基 类成员相同的成员名 在运行时用同一个 成员名调用类对象 的成员,会调用哪 个对象的成员? 通过继承而产生 相关的不同 的派生类 与基类成员同 名的成员在不 同的派生类中 有不同的含义
12.2 一个典型的 多态性的 个承上启下的例子孔 综合 一个基础 运算符重载 应用 用例 例12.1先建立一个Point(点)类,包含数据成员 x,y(坐标点)。以它为基类,派生出一个Circle(圆)类, 增加数据成员r(半径),再以Circle类为直接基类, 派生出一个Cylindere(圆柱体)类,再增加数据成员 (高)。要求编写程序,重载运算符“<<”和 “>>”,使之能用于输出以上类对象
12.2 一个典型的 例子 例12.1 先建立一个Point(点)类,包含数据成员 x,y(坐标点)。以它为基类,派生出一个Circle(圆)类, 增加数据成员r(半径),再以Circle类为直接基类, 派生出一个Cylinder(圆柱体)类,再增加数据成员 h(高)。要求编写程序,重载运算符“<<”和 “>>”,使之能用于输出以上类对象。 一个承上启下的例子 继 承运算符重载 综合 应用 多态性的 一个基础 用例