- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
继承和派生 第7章 7.1 继承的概念 继承(Inheritance)就是在一个已存在的类的基础上建立一个新类,实质就是利用已有的数据类型定义出新的数据类型。 在继承关系中: 被继承的类称为基类(Base class)(或父类) 定义出来的新类称为派生类(Derived class)(子类) 派生类不仅可以继承原来类的成员,还可以通过以下方式扩充新的成员: (1)增加新的数据成员 (2)增加新的成员函数 (3)重新定义已有成员函数 (4)改变现有成员的属性 7.2 单继承 7.2.1 单继承的定义方式 class 派生类名: 访问方式 基类名 { 派生类中的新成员 } 其中: (1)class是定义类的关键字;派生类名由用户自己命名。 (2)在冒号“:”后的内容告诉系统,这个派生类是从哪个基类派生的以及在派生时的继承方式是什么。 (3)继承方式即访问方式,可以为public、protected或private,如果省略,则默认为private方式。 (4)基类名必须是程序中已有的一个类的类名。 (5)大括号内的部分是派生类中新定义的成员或是对基类成员的改造。 【例7-1】 定义长方形类Rectangle,它的数据成员length和width分别表示长方形的长度和宽度,它的成员函数只有set1,用于设置数据成员的值。以Rectangle作为基类来定义派生类Cuboid(长方体类),其中增加数据成员height、成员函数set2和show。 7.2.2 派生类的成员构成 派生新类经历了三个步骤: (1)吸收基类成员 派生类继承和吸收了基类的全部数据成员和除了构造函数、析构函数之外的全部成员函数。 (2)改造基类成员 一是基类成员的访问方式问题; 二是对基类数据成员或成员函数的覆盖。 (3)添加新成员 保证了派生类在功能上比基类有所发展。 7.2.3 继承方式对基类成员的访问属性控制 1. 公有继承(public继承方式) 基类中public和protected成员的访问属性在派生类中不变; 而基类中的不可访问成员和private成员在派生类中不可访问。 注意:不可访问成员与私有成员的区别。 2. 私有继承(private继承方式) 基类中public和protected成员都以private成员出现在派生类中; 而基类中的不可访问成员和private成员在派生类中不可访问。 相当于中止了基类功能的继续派生! 3. 保护继承(protected继承方式) 基类中public和protected成员都以protected成员出现在派生类中; 而基类中的不可访问成员和private成员在派生类中不可访问。 类的继承方式对基类成员的访问属性控制 7.2.4 派生类的构造函数 派生类的构造函数: 一方面负责调用基类的构造函数对基类成员进行初始化; 另一方面还要负责对基类的构造函数所需要的参数进行必要的设置。 派生类名::派生类构造函数名(总参数列表):基类构造函数名(参数列表) { 派生类中新增数据成员初始化语句 } 【例7-3】设计一个点类Point,包含横、纵坐标两个数据成员,由它派生出圆类Circle,添加一个半径数据,并求其面积。测试基类的构造函数和派生类的构造函数的执行顺序。 【例7-4】定义一个描述圆的类Circle和一个描述圆柱体的类Cylinder,并计算其相应的面积。 在C++中,处理同名函数时有以下3种基本方法: ① 根据函数参数的特征进行区分。如: max(int,int) max(float,float) ② 根据类对象进行区分。 cylinder.area() circle.area() ③ 使用作用域运算符“::”进行区分,如: Ccircle::area() 7.2.5 有子对象的派生类的构造函数 派生类名::派生类构造函数名(总参数列表): 基类构造函数名(参数列表), 子对象名(参数列表),…… { 派生类中新增数据成员初始化语句 } 此时,构造函数执行的一般次序为: ① 调用基类的构造函数。 ② 调用子对象的构造函数。当派生类中含有多个子对象时,各子对象的构造函数的调用顺序按照它们在类中说明的先后顺序进行。 ③ 执行派生类构造函数的函数体。 7.2.6 派生类的析构函数 析构函数的作用是在对象撤销之前,进行必要的清理工作。 当对象被删除时,系统会自动调用析构函数。 析构函数的调用顺序与构造函数的调用顺序正好相反: 先执行派生类自己的析构函数; 然后调用子对象的析构函数; 最后调用基类的析构函数。 【例7-5】 分析以下程序
您可能关注的文档
- C#入门经典(第4版)课件 作者 978-7-302-18587-1k ch08.ppt
- C#入门经典(第4版)课件 作者 978-7-302-18587-1k ch09.ppt
- C#入门经典(第4版)课件 作者 978-7-302-18587-1k ch12.ppt
- C#网络编程技术教程 作者 金华 华进 第2章.ppt
- C#网络编程技术教程 作者 金华 华进 第3章.ppt
- C#网络编程技术教程 作者 金华 华进 第4章.ppt
- C#网络编程技术教程 作者 金华 华进 第5章.ppt
- C#网络编程技术教程 作者 金华 华进 第6章.ppt
- C#网络编程技术教程 作者 金华 华进 第7章.ppt
- C#网络编程技术教程 作者 金华 华进 第8章.ppt
- C++程序设计大学教程 王春玲 第8章 虚函数与多态性.ppt
- C++程序设计大学教程 王春玲 第9章 运算符重载.ppt
- C++程序设计大学教程 王春玲 第12章 异常处理.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第六章.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第七章.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第三章.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第十二章.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第十三章.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第十一章.ppt
- C++大学基础教程 作者 徐惠民 C++大学基础教程第十章.ppt
最近下载
- 151页-【低空经济】低空无人机公共测试场与验证基地设计方案.pdf
- 理想 RISO 9050 7050 3050 7010 3010 闪彩印王中文技术维修手册 后面可以参考理想闪彩印王 EX7200 EX9050 EX9000 EX7250 系列中文维修手册 .pdf VIP
- 生物酶解技术.pptx VIP
- “素养导向”初中物理大单元教学策略及案例.docx VIP
- 小学四年级综合实践活动《衣服巧收纳》公开课课件.pptx VIP
- 公司建设项目全过程造价咨询工作规范.doc VIP
- 教学进度计划表.pdf VIP
- 直肠癌放射治疗靶区勾画.ppt
- 软件工程项目造价技术规范.pdf VIP
- 2025年左玉辉-环境学.pptx VIP
文档评论(0)