- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]继承和多态
继承和多态 C++程序员的进阶 第一步:简单地把C + +作为一个“更好的C”,因为C + +在使用任何函数之前必须声明它,并且对于如何使用变量有更苛刻的要求。简单地用C + +编译器编译C程序常常会发现错误。 第二步:进入“面向对象”的C + +。这意味着,用好抽象和封装,将数据结构和在它上面活动的函数捆绑在一起组织代码,使用构造函数和析构函数去完成初始化和销毁的工作。如果我们仅仅停留在这里,我们就失去了C++语言最重要的部分。这个最重要的部分才真正是向面向对象程序设计的飞跃。 第三步:使用好继承和多态。 1 类的继承和派生 保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类(或子类)。 继承与派生问题举例 继承与派生问题举例 继承与派生问题举例 继承与派生问题举例 继承与派生的目的 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 派生类的声明 class 派生类名:继承方式 基类名 { 成员声明; } 2 类成员的访问控制 派生类的生成经历了三个步骤: 吸收基类成员:派生类接收了基类当中除构造、析构和赋值之外的所有成员。 改造基类成员:一是通过继承方式改变对基类成员的访问控制;二是如果派生类中声明了和基类同名的成员,就会隐藏基类中的成员。 添加新的成员:保证派生类在功能上有所发展和改进。 三种继承方式 三种继承方式 公有继承(public):基类的成员在派生类中保持访问级别不变。 私有继承(private):从基类继承而来的成员在派生类中为private成员。 保护继承(protected):基类的public和protected成员在派生类中为protected成员,private成员仍为私有成员。 注意(1): 1 使用struct和class关键字定义的类的区别在于:a. struct成员默认的访问权限为public, class成员默认访问权限为private; b. struct定义的派生类默认为public继承,class定义的派生类默认为private继承。 2 使用最多的继承方式为public继承。 3 友元关系不能被继承。 4 构造函数、析构函数和operator=函数不能被继承。 注意(2):继承和组合的区别 派生类与基类反映的是”is-a”(是一个)的关系;组合反映的是两个类之间”has-a”(有一个)的包含关系。 如果类A 和类B 毫不相关,不可以为了使B 的功能更多些而让B继承A 的功能和属性。若在逻辑上B 是A 的“一种”(a kind of ),则允许B 继承A 的功能和属性。 若在逻辑上A 是B 的“一部分”(a part of),则不允许B 从A 派生,而是要用A 和其它东西组合出B。 3 类型兼容规则 类型兼容规则指的是在任何需要基类的地方都可以用公有派生类的对象来替代,或者说对象可以作为它自己的类型或它的基类的对象使用。这也称为“向上兼容”规则。 它包括以下情况: 派生类对象可以赋值给基类对象; 派生类对象可以初始化基类引用; 派生类对象的地址可以赋值给基类指针。 注意:派生类对象可以作为基类对象使用,但只能使用从基类继承而来的成员。 4 构造和析构 派生类中的基类成员应该在构造函数初始化类表中显式或隐式进行;初始化列表中还应该包含内嵌成员的构造。而构造函数的调用次序同书写次序无关: 按照基类被继承的顺序从左到右调用基类构造函数; 按照类中声明次序调用内嵌成员的构造函数; 构造函数体中的内容。 初始化列表 构造函数有个特殊的初始化方式叫“初始化表达式表”(简称初始化表)。初始化表位于函数参数表之后,却在函数体 {} 之前。这说明该表里的初始化工作发生在函数体内的任何代码被执行之前。构造函数初始化表的使用规则: 如果类存在继承关系,派生类必须在其初始化表里调用基类的构造函数。 类的const 常量只能在初始化表里被初始化,因为它不能在函数体内用赋值的方式来初始化。 类的数据成员的初始化可以采用初始化表或函数体内赋值两种方式,这两种方式的效率不完全相同。 非内部数据类型的成员对象应当采用第一种方式初始化,以获取更高的效率。 对于内部数据类型的数据成员而言,两种初始化方式的效率几乎没有区别,但后者的程序版式似乎更清晰些。 拷贝构造函数 若建立派生类对象时调用默认拷贝构造函数,则编译器将自动调用基类的默认拷贝构造函数。 若编写派生类的拷贝构造函数,则需要为基类相应的拷贝构造函数传递参数。例如: C::C(C c1):B(c1) {…} 继承时的析构函数 析构函数也不被继承,派生类
您可能关注的文档
- [工学]第四章 8086 8088的指令系统.ppt
- [工学]第四章 分子的对称性.pdf
- [工学]第四章 S7-200的硬件系统与内部资源-2.ppt
- [工学]第四章 ARM汇编程序设计.ppt
- [工学]第四章 Windows操作系统安全.ppt
- [工学]第四章 炔烃 二烯烃 红外光谱.ppt
- [工学]第四章 三相电力系统.ppt
- [工学]第四章 几何公差与几何误差检.ppt
- [工学]第四章 土地等级调查概述ok.ppt
- [工学]第四章 单形和聚形.ppt
- 新冀教版2024七年级数学下册第八章名师课件:8.4.2 单项式乘多项式.pptx
- 统编版(2024)新教材七年级历史下册第一单元《隋唐时期:繁荣与开放的时代》每课(分层作业)(含答案)汇编(含7套题).docx
- 新冀教版2024七年级数学下册第八章精品课件:8.5.1 平方差公式.pptx
- 新冀教版2024七年级数学下册第八章名师课件:8.4.1 单项式乘单项式.pptx
- 新冀教版2024七年级数学下册第八章《8.5.1 平方差公式》精品课件.pptx
- 2025年应聘大学辅导员个人简历7篇.pdf
- 2025年市场营销4p理论.pdf
- 2025年广告公司上班规章制度.pdf
- 2025年工程质量管理制度.pdf
- 飞翔的梦小鸟的成长日记.pptx
文档评论(0)