广东海洋大学:《C++程序设计》第12章 继承与派生类

A的外的出》净的出《的要的《图的《的气

教学内容: 121继承的概念 122派生类 123二义性问题 124赋值兼容规则 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 2 教学内容: 12.1 继承的概念 12.2 派生类 12.3 二义性问题 12.4 赋值兼容规则

教学要求: 团能通过继承已有的类建立新类 区掌握继承的三种方式:公有、保护、私有继承 区掌握派生类和基类的概念; 区掌握派生类的构造函数和析构函数; 区理解多重继承和虚基类 C++程序设计课件设计制作:徐龙琴 3
C++程序设计课件 设计制作:徐龙琴 3 能通过继承已有的类建立新类 掌握继承的三种方式:公有、保护、私有继承 掌握派生类和基类的概念; 掌握派生类的构造函数和析构函数; 理解多重继承和虚基类 教学要求:

§121继承的概念 继承是面向对象程序设计的基本特征之一,它允许在原类的 基础上创建新类,新类即可从一个或多个原类中继承(共享)其 函数和数据,也可以重新定义原类中没有的数据和函数。故通过 类的“继承”,可将原来的程序代码重复使用,从而减少了程序 代码的冗余度,提高了编程的效率。 类的继承是新类从已有类那里得到已有的特性。从已有类产 生新类的过程就是类的派生。在继承过程中,原类称为基类或 父类,而由类派生的新类则称为派生类或子类。派生新类的过 程包括吸收基类的成员、调整基类成员和添加新的成员三步 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 4 §12.1 继承的概念 继承是面向对象程序设计的基本特征之一,它允许在原类的 基础上创建新类,新类即可从一个或多个原类中继承(共享)其 函数和数据,也可以重新定义原类中没有的数据和函数。故通过 类的“继承” ,可将原来的程序代码重复使用,从而减少了程序 代码的冗余度,提高了编程的效率。 类的继承是新类从已有类那里得到已有的特性。从已有类产 生新类的过程就是类的派生。在继承过程中,原类称为基类或 父类,而由类派生的新类则称为派生类或子类。派生新类的过 程包括吸收基类的成员、调整基类成员和添加新的成员三步

据派生类所拥有的基类数目不同,可以分为: 单继承:一个类只有一个直接基类时,称为单继承 多继承:一个类同时有多个直接基类时,则称为多继承 基类与派生类之间的关系如下: ①基类是对派生类的抽象,派生类是对基类的具体化 ②派生类是基类的组合。多继承可看作是多个单继承的简 单组合。 ③新类也可作为基类再派生新类,且一个基类可同时派生出 多个派生类。基类的基类甚至更高层的基类称为间接基类 ④派生类可对一些继承来的函数重新定义,以适应新的要求 ⑤派生类包含了它所有基类中除构造和析构函数之外的所有成员。 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 5 据派生类所拥有的基类数目不同,可以分为: 单继承:一个类只有一个直接基类时,称为单继承 多继承:一个类同时有多个直接基类时,则称为多继承 基类与派生类之间的关系如下: ① 基类是对派生类的抽象,派生类是对基类的具体化 ② 派生类是基类的组合。多继承可看作是多个单继承的简 单组合。 ③ 新类也可作为基类再派生新类,且一个基类可同时派生出 多个派生类。基类的基类甚至更高层的基类称为间接基类 ④派生类可对一些继承来的函数重新定义,以适应新的要求 ⑤ 派生类包含了它所有基类中除构造和析构函数之外的所有成员

§122派生类 1派生类的定义格式: class派生类名:继承方式基类名1,…继承方式基类名n 派生类新成员声明;/与前面声明一个类时完全相同 继承方式:指定了派生类成员以及类外对象对于从基类 例:假设基类Base1,Base2是已声明的类,声明一个名为Dr1的 派生类,该猫魇奎奥盛忌的权曝生裔来种继承方式: class drl:pu映lge鼻示公线 派生类射熄声示私有继承,是默认方式; protected:表示保护继承。 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 6 §12.2 派生类 ⒈派生类的定义格式: class 派生类名:继承方式 基类名1,…继承方式 基类名n { 派生类新成员声明; //与前面声明一个类时完全相同 }; 例: 假设基类Base1,Base2是已声明的类,声明一个名为Dr1的 派生类,该类从基类Base1,Base2派生而来: class Dr1:public Base1,private Base2 { 派生类新成员声明; }; 继承方式:指定了派生类成员以及类外对象对于从基类 继承来的成员的访问权限。有三种继承方式: public:表示公有继承; private:表示私有继承,是默认方式; protected:表示保护继承

下表是不同继承方式的基类在派生类中的访问权限 继承方式 基类特性继承后在派生类特性 public public 公有继承 protected protected private 不可访问 public private 私有继承 protected private private 不可访问 public protecte 保护继承 protected protected private 不可访问 C++程序设计课件设计制作:徐龙琴 7
C++程序设计课件 设计制作:徐龙琴 7 下表是不同继承方式的基类在派生类中的访问权限 继承方式 基类特性 继承后在派生类特性 公有继承 public public protected protected private 不可访问 私有继承 public private protected private private 不可访问 保护继承 public protected protected protected private 不可访问

从上表可以看出: ①公有继承时:基类成员的访问权限在派生类中不变。于是派 生类的其他成员可以直接访问继承来的公有和 保护成员。其他外部使用者只能通过派生类的 对象访问继承来的公有成员 ②保护继承时:基类成员的访问权限在派生类中全变为保护的 访问方式。于是派生类的其他成员可直接访 问从基类继承来的公有和保护成员,但在类外 部通过派生类的对象无法访问它们 C++程序设计课件设计制作:徐龙琴 8
C++程序设计课件 设计制作:徐龙琴 8 从上表可以看出: ①公有继承时:基类成员的访问权限在派生类中不变。于是派 生类的其他成员可以直接访问继承来的公有和 保护成员。其他外部使用者只能通过派生类的 对象访问继承来的公有成员 ②保护继承时:基类成员的访问权限在派生类中全变为保护的 访问方式。于是派生类的其他成员可直接访 问从基类继承来的公有和保护成员,但在类外 部通过派生类的对象无法访问它们

③私有继承时:基类成员的访问权限在派生类中全变为私有的访 问方式 ④基类中私有成员在派生类中是隐藏的,只能在基类内部访问。 ⑤派生类中的成员不能访问基类中的私有成员,可以访问基类 中的公有成员和保护成员 ⑥派生类中用“类名:成员”访问基类成员 ⑦若派生类定义了与基类同名的成员,若要在派生类中使用基 类同名成员,可用:类名:成员 ⑧派生类对基类的静态成员的访问用:类名::成员 C++程序设计课件设计制作:徐龙琴
C++程序设计课件 设计制作:徐龙琴 9 ③私有继承时:基类成员的访问权限在派生类中全变为私有的访 问方式 ④ 基类中私有成员在派生类中是隐藏的,只能在基类内部访问。 ⑤ 派生类中的成员不能访问基类中的私有成员,可以访问基类 中的公有成员和保护成员 ⑥ 派生类中用“类名 :: 成员”访问基类成员 ⑦ 若派生类定义了与基类同名的成员,若要在派生类中使用基 类同名成员,可用:类名 :: 成员 ⑧ 派生类对基类的静态成员的访问用:类名 :: 成员

2.派生类的构造函数: 派生类的数据成员由所有基类的数据成员与派生类新增 的数据成员共同组成,如果派生类新增成员中包括其他类的 对象(子对象),派生类的数据成员中实际上还间接包括了 这些对象的数据成员。因此,构造派生类的对象时,必须对 基类数据成员、新增数据成员和成员对象的数据成员进行初 始化。派生类的构造函数必须要以合适的初值作为参数,隐 含调用基类和新增对象成员的构造函数,来初始化它们各自 的数据成员,然后再加入新的语句对新增普通数据成员进行 初始化。 C++程序设计课件设计制作:徐龙琴 10
C++程序设计课件 设计制作:徐龙琴 10 ⒉派生类的构造函数: 派生类的数据成员由所有基类的数据成员与派生类新增 的数据成员共同组成,如果派生类新增成员中包括其他类的 对象(子对象),派生类的数据成员中实际上还间接包括了 这些对象的数据成员。因此,构造派生类的对象时,必须对 基类数据成员、新增数据成员和成员对象的数据成员进行初 始化。派生类的构造函数必须要以合适的初值作为参数,隐 含调用基类和新增对象成员的构造函数,来初始化它们各自 的数据成员,然后再加入新的语句对新增普通数据成员进行 初始化
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 广东海洋大学:《C++程序设计》第12章的练习题.ppt
- 广东海洋大学:《C++程序设计》第16章 异常处理.ppt
- 广东海洋大学:《C++程序设计》第15章 模板的使用.ppt
- 广东海洋大学:《C++程序设计》第14章 输入输出流.ppt
- 广东海洋大学:《C++程序设计》_第13章运算符重载.ppt
- 广东海洋大学:《C++程序设计》实验10 类和对象的答案.doc
- 广东海洋大学:《C++程序设计》实验9 类和对象.doc
- 广东海洋大学:《C++程序设计》实验9 类和对象.doc
- 广东海洋大学:《C++程序设计》实验8 结构体的应用答案.doc
- 广东海洋大学:《C++程序设计》实验8 结构体的应用.doc
- 广东海洋大学:《C++程序设计》实验6 数组的应用答案.doc
- 广东海洋大学:《C++程序设计》实验6-1数组的应用答案.doc
- 广东海洋大学:《C++程序设计》实验7-1指针的应用2.doc
- 广东海洋大学:《C++程序设计》实验7 指针的应用.doc
- 广东海洋大学:《C++程序设计》实验7 指针的应用的答案.doc
- 广东海洋大学:《C++程序设计》实验3 循环程序设计的答案.doc
- 广东海洋大学:《C++程序设计》实验3 循环程序设计.doc
- 广东海洋大学:《C++程序设计》实验3 循环程序设计的答案.doc
- 广东海洋大学:《C++程序设计》实验3 循环程序设计的答案.doc
- 广东海洋大学:《C++程序设计》实验4 函数的应用的答案.doc
- 广东海洋大学:《C++程序设计》第11章 类与对象.ppt
- 广东海洋大学:《C++程序设计》第11章 类与对象的练习题.ppt
- 广东海洋大学:《C++程序设计》第10章 练习题.ppt
- 广东海洋大学:《C++程序设计》第10章 结构体.ppt
- 广东海洋大学:《C++程序设计》结构中的有关例题.doc
- 广东海洋大学:《C++程序设计》第八章 指针与引用.ppt
- 广东海洋大学:《C++程序设计》第八章 练习题.ppt
- 广东海洋大学:《C++程序设计》第七章 数组.ppt
- 广东海洋大学:《C++程序设计》第七章练习题.ppt
- 广东海洋大学:《C++程序设计》第六章 程序结构.ppt
- 广东海洋大学:《C++程序设计》第五章练习题.ppt
- 广东海洋大学:《C++程序设计》第五章 函数.ppt
- 广东海洋大学:《C++程序设计》函数的调用过程.ppt
- 广东海洋大学:《C++程序设计》第四章 过程化语句.ppt
- 广东海洋大学:《C++程序设计》_第四章练习题(流程控制语句).ppt
- 广东海洋大学:《C++程序设计》第三章 表达式和语句.ppt
- 广东海洋大学:《C++程序设计》第二,三章题(数据类型运算符表达式).ppt
- 广东海洋大学:《C++程序设计》第二章 数据类型与输入输出.ppt
- 广东海洋大学:《C++程序设计》第一章 C++入门.ppt
- 广东海洋大学:《C++程序设计》VC++6.0简介.ppt