- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 继承 9.1 继承的概念与表示 继承是面向对象的三种重要特性之一。 C++通过支持继承来达到软件重用的目的。 9.1.1 继承与派生 保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类(或子类)。 单继承:一个派生类只有一个直接基类. 多重继承:一个派生类同时有多个基类. 下面通过代码说明继承: 9.1.2 继承关系的描述 在从父类派生子类时,子类首先继承了父类的全部属性和方法(包括静态和非静态成员,但不包括友员),这也说明子类的对象是一个父类对象。 子类应完成的功能: 可以增加新的数据成员 可以增加新的成员函数 可以重新定义基类中已有的成员函数 可以改变现有成员的属性 9.2 继承的实现 9.2.1 继承的语法形式 声明的结构: 一般格式 class 派生类名 : [访问权修饰符] 基类名 { //派生类新特性(新增成员) } 定义派生类 class manager: public employee { }; 9.2.2 对基类成员的访问 子类虽然继承了父类的所有成员,但是否可以访问这些从父类继承来的成员由访问权限修饰符和成员本身在父类中的公开程度共同决定。 即便子类含有某个从父类继承的成员,但也并不是一定可以使用它。 基类成员在派生类中的访问属性 基类成员的访问属性有三种: public protected private 派生类有三种继承方式 公有继承: public 私有继承: private 保护继承: protected 见表9.1 基类成员在派生类中的访问属性 基类中自身成员可以对基类中任何一个其他成员进行访问,但通过基类的对象,只能访问该类公有成员。 基类中的私有成员不允许派生类继承(即不可直接访问)。 基类中的公有成员在派生类中以继承方式的属性为准。 基类中的保护成员在派生类中以与继承方式相比较取限制最大的。 派生类对基类成员的访问规则 私有继承的访问规则 派生类对基类成员的访问规则 经过私有继承之后,所有基类的成员都成为了派生类的private成员或不可直接访问成员,若进一步派生,基类的全部成员都无法在新的派生类中被访问,实际相当于中止了基类功能的继承派生。因此,私有继承的实际应用很少。 派生类对基类成员的访问规则 公有继承的访问规则 派生类对基类成员的访问规则 保护继承的访问规则 调整基类成员在派生类中的访问属性的其他方法 1 同名成员 定义派生类时,C++允许派生类与基类有同名的成员。 若在派生类中使用基类成员,则格式为: 基类名::成员名 2 访问声明 问题的提出 对于公有继承,基类的公有成员函数成为派生类的公有成员函数 对于私有继承,基类的公有成员函数成为派生类的私有成员函数 这些方法在实际应用中可能带来不便。若希望通过派生类的对象直接访问基类的个别成员,如何处理? 问题的解决 C++提供了称为访问声明的特殊机制,可个别调整基类的某些成员,使之在派生类中保持原来的访问属性。 访问声明就是把基类的保护成员或公有成员直接写到私有派生类定义中的同名段中,同时给成员名前冠以基类名和作用域标识符“::”; 访问声明机制可以使外界可以通过派生类的界面直接访问基类的某些成员,同时也不影响其他基类成员的封闭性。 使用访问声明时应注意的问题: 数据成员也可以使用访问声明 访问声明中只含有不带类型和参数的函数名或变量名 访问声明不能改变类成员原来在基类中的成员性质。基类中私有成员不能使用访问声明。 对于基类中的重载函数名,访问声明将对基类中所有同名函数起作用。因此对重载函数使用访问声明时要慎重。 9.3 派生类对象的构造与析构 在面向对象的程序设计中,类与类之间的关系呈两类: 一是派生(继承)关系,二是聚集关系。 9.3.1 继承与聚合 1. 继承是“is-a”关系 若类B继承于类A,或者说类A派生了类B,则类B的对象应该是一种类A的对象。 2. 聚集是“has-a”关系 聚集是指一个类使用另一个类。 若类B包含一个类A的对象为成员(使用类A),则类A是类B的组成部分。 3. 简单聚合与组合 在C++中存在两种形式的整体与部分的聚集形式。 一种简单的聚集称为聚合,整体与部分是相对独立定义的,部分可以属于多个整体。 例如,“一面墙”可以是多个“房间”的组成部分,墙与房间是聚合关系。 另一种特殊形式的聚集称为“组合”,是指部分只能属于一个整体,而且整体和部分之间是具有一致的生命周期的紧密关系。 聚合:汽车与轮胎 组合:公司与部门 9.3.2 复杂类型的构造与拆除 1. 子类构造时要包括对父类的构造 由于基类构造函数和析构函数不能被继承: 在派
您可能关注的文档
- 编译原理教程 第二版 教学课件 作者 胡元义 第6-8章 第8章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第1章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第2章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第3章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第4章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第5章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第6章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第7章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 第8章.ppt
- 编译原理教程 第三版 教学课件 作者 胡元义 全书 封面及目录.ppt
最近下载
- 第十课 养成遵纪守法好习惯(实用课件)-【中职专用】中职思想政治《职业道德与法治》高效课堂精品实用课件+教案(高教版2023·基础模块).pptx
- 观察案例小班午睡记录与分析.docx VIP
- 最新高考英语3500单词快速记忆法(联想记忆).doc
- 2022年人教版中考生物复习知识点思维导图 主题三 生物圈中的绿色植物.ppt VIP
- 筝韵系京腔,古乐传今声——筝曲《夜深沉》《戏韵》探析.pdf
- 个人血糖监测记录表.docx VIP
- 初中英语课堂活动设计与实施计划.docx VIP
- 教育学 (王道俊 郭文安) (Z-Library)_4.pdf VIP
- 创新管理(浙江大学)中国大学MOOC 慕课章节测验及期末考试客观题答案.docx
- 基于核心素养培养的初中英语课堂活动设计分析.docx VIP
文档评论(0)