- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章数据与表达式-Read.doc
第7章 继承 1
内容提要 1
7.1 类之间的关系 1
7.2 基类和派生类 2
7.3 基类的初始化 5
7.4 继承的应用实例 5
7.5 多继承 5
第7章 继承
内容提要
继承是面向对象程序设计实现软件重用的重要方法。程序员可以在已有类的基础上定义新的数据成员和成员函数。原有类称为基类,新的类称为派生类,这种程序设计方法称为继承。一个操作的特殊实现,用继承方法增加新的类,不会影响原有的类层次结构。派生类成员由基类成员和自身定义的成员组成。
单继承的派生类只有一个基类。多继承的派生类有多个基类。
类成员的访问特性和类的继承性质决定类成员的作用域和可见性。类的公有成员称为接口,可以在类外访问。派生类不能访问基类的私有(private)成员,但可以访问基类的公有(public)和保护(protected)成员。对基类成员的访问性质还受继承方式影响。公有(public)继承方式,基类的public和protected成员在派生类中性质不变;保护(protected)继承,基类的public和protected成员都成为派生类的protected成员;私有(private)继承,基类的public和protected成员都成为派生类的private成员。
派生类中不可见基类的私有数据成员,但这些数据存储单元依然被建立。创建派生类对象时,派生类的构造函数总是先调用基类构造函数来初始化派生类中的基类成员。调用基类构造函数可以通过初始化列表实现数据成员的初始化。调用析构函数的次序和调用构造函数的次序相反。
类继承关系中,覆盖成员出现访问的二义性,可以用作用域符显示指定类成员。
为了避免多继承类格中的汇点类在派生类对象中产生不同副本,C++提供虚继承机制。多继承提供了软件重用的强大功能,也增加了程序的复杂性。
7.1 类之间的关系
面向对象技术中,类是数据和操作的集合,它们之间有三种主要关系:has-A,uses-A和is-A。
has-A表示类的包含关系,用类成员表示。
uses-A表示一个类部分地使用另一个类,通过类之间成员函数的相互联系,定义友员或对象参数传递实现。
is-A表示一种分类方式,描述类的抽象和层次关系,用继承机制实现。例如,植物分类如图7.1所示。
图7.1 植物分类系统
7.2 基类和派生类
C++中,描述类继承关系的语法形式是:
class 派生类名 : 基类名表
{
数据成员和成员函数说明
};
其中“基类名表”由以下语法形式构成:
访问控制 基类名1, 访问控制 基类名2 ,… , 访问控制 基类名n
“访问控制”是表示继承权限的关键字,称为访问描述符:
public 公有继承
private 私有继承
protected 保护继承
7.2.1 访问控制
一个派生类公有继承一个基类时,基类中所有公有成员成为派生类的公有(public)成员;基类中所有保护成员成为派生类的保护(protected)成员。
一个派生类私有继承一个基类时,基类中所有公有成员和保护成员同时成为派生类的私有(private)成员。
一个派生类保护继承一个基类时,基类中所有公有成员和保护成员同时成为派生类的保护(protected)成员。
不论派生类以何种方式继承基类,都不能直接使用基类的私有(private)成员。
图7.2表示了不同继承方式派生类成员的访问特性。
(a) 公有继承
(b) 私有继承
(c) 保护继承
图7.2 不同继承方式派生类成员的访问特性
1.公有继承
以公有方式继承的派生类,基类的public和protected成员在派生类中的性质不变。
【例7-1】公有继承的测试。程序定义了3个类:从A类派生B类,又从B类派生C类。A类称为C类的间接基类。类格见图7.3。
图 7.3 例7-1的类格
基类的私有成员在派生类中不可见,但并不是说在建立派生类对象时,就不创建基类的私有数据成员。
【例7-2】测试派生类对象继承基类的私有数据成员。
2.私有继承
以私有方式继承的派生类,基类的public和protected成员成为派生类的私有成员。
【例7-3】私有继承的测试。把例7-1修改为类B私有继承类A。
3.保护继承
保护继承把基类的公有成员和保护成员作为派生类的保护成员,使其在派生类中屏蔽。
4.访问声明
C++提供一种访问调节机制,使一些本来在派生类中不可见的成员变为可访问,称为访问声明。
访问声明的格式为: 基类名 ::成员
值得注意的是:
(1)访问声明仅仅调整名字的访问权限。
(2)访问声明不允许在派生类中降低或提升基类成员的可访问性。
(3)对重载函数名的访问声明将调整基类所有同名函数的访问域。
7.2.2 重名成员
C++允许派生类
您可能关注的文档
最近下载
- 护理个案汇报:高压氧-从昏迷到健康的桥梁.pptx
- (新教材)部编版语文一年级上册第8单元大单元教学设计.pdf VIP
- 内控自我评价实施步骤.pdf VIP
- 2024年秋季人教版七年级上册地理全册大单元整体设计教学课件(新教材).pptx
- 5.2 土壤 课件 2023-2024学年高一地理人教版(2019)必修第一册.pptx
- 建筑工程安全施工安全风险评估报告.pdf VIP
- 中国传媒大学-舆论学原理、方法与应用-课件-第一章 舆论传播的源与流.pptx
- 营养学七大膳食营养素思维导图.pdf VIP
- 高考英语核心高频688词汇打印版.pdf
- 平抛运动(类平抛和斜抛运动) 课件 高中物理人教版必修第二册.ppt
文档评论(0)