[工学]第八章 继承和派生.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第八章 继承和派生

第八章 继承和派生 本章学习内容 继承和派生的基本概念; 派生类的定义及应用; 多继承的二义性和支配原则; 虚基类的引入和定义。 本章目录 第二十三讲 基类和派生类 第二十四讲 派生类的构造函数和析构函数 第二十五讲 二义性和虚基类 本章小结 第二十三讲 基类和派生类 一、继承的概念和定义 二、派生类的三种继承方式 练一练 一、继承的概念和定义 【实例8-1】 设计一个人员管理程序,实现对教师、学生、公务员信息的管理。要求使用独立的三个类来实现本程序。 点击打开【实例8-1】源程序 程序分析: 因为教师和学生都有部分相同的数据成员和成员函数,对于各个类中相同的代码,可以设计一个基类Person,将相同的数据成员和成员函数的定义放在基类中,然后通过继承的方式再设计两个子类(学生类Student、教师类Teacher),在这两个类中将该类独有的数据成员和成员函数进行定义。这时子类自动继承父类Person中的数据成员和成员函数,所以可以节省很多重复代码,提高编码效率。 程序运行结果如下: 1.继承的概念 C++类之间的继承和派生关系,如图8-2所示: 关于继承的几点说明: (1)一个基类可以派生一个或多个新类,派生类还可以再派生出新类,因此,基类和派生类是相对而言的。 (2)单继承:由一个基类派生的继承称为单继承。如图中的B1、B2、C1都是只有一个基类的派生类,为单继承。 (3)多继承:由多个基类共同派生的继承称为多继承。 (4)类的层次通常反映了客观世界中某种真实的模型。基类是对若干个派生类的抽象,派生类是基类的具体化。基类抽取了它的派生类的公共特征,派生类通过增加数据和操作将抽象基类变为某种有用的类型。 2.继承的定义 (2)多继承的定义格式如下: 多继承中新定义的派生类是从多个基类中派生的,在类头中声明时用逗号“,”分隔各个基类,对每个基类都可以指定继承方式。 二、派生类的三种继承方式 3.继承方式 3.继承方式 练一练 【练习8-1】 定义一个图形基类Figure,派生矩形Rectangle、三角形Triangle、长方体Cuboid三个新类,计算各种图形的周长,并用数据进行测试。 解:采用继承机制实现。 (1)程序分析如下: ① 定义基类Figure,它有两个double类型的保护数据成员a和b,可以被各个派生类继承。 ② 定义派生类Rectangle,公有继承方式,a和b是矩形的长和宽,类中定义a、b的初始化函数和计算周长的函数。 ③ 定义派生类Triangle,公有继承方式,a和b是三角形的两条边,添加一个double类型的私有数据成员c,表示三角形的第三条边,类中定义a、b、c的初始化函数和计算周长的函数。 ④ 定义派生类Cuboid,公有继承方式,a和b是长方体的长和宽,添加一个double类型的私有数据成员c,表示长方体的高,类中定义a、b、c的初始化函数和计算周长的函数。 ⑤ 主函数main()中,创建派生类的对象,调用成员函数输出各种图形的周长。 第二十四讲 派生类的构造函数 和析构函数 一、派生类的构造函数和析构函数 二、练一练 一、派生类的构造函数和析构函数 【实例8-3】 修改【实例8-1】,使用构造函数实现类中数据成员的赋值。 点击打开【实例8-3】源程序 程序分析: 和【实例8-1】程序不同的是,【实例8-3】是通过构造函数对基类和派生类的数据成员初始化。程序中定义了基类和派生类的构造函数和析构函数。 1.派生类的构造函数 派生类也可以定义构造函数,实现数据成员的赋值,而且构造函数也可以重载。 C++提供一种机制,使得在创建派生类对象时,能够调用基类的构造函数初始化基类的数据成员。单继承派生类构造函数的一般格式如下: 派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象,所以在定义派生类的构造函数时除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数。 说明: (1)构造函数不能够被继承。 (2)派生类不带参数的构造函数自动调用基类不带参数的构造函数。 (3)派生类带参数的构造函数若不指定调用基类带参数的构造函数,系统会自动调用基类不带参数的构造函数。 (4)若派生类有构造函数,则基类中或者没有定义任何构造函数,或者必须有不带参数的构造函数。 (5)若基类有带参数的构造函数,则派生类必须定义带参数的构造函数,将参数传递给基类构造函数。这样的派生类的函数体可为空,仅在函数头中起到传递参数的作用。 2.派生类的析构函数 派生类也可以定义自己的析构函数,其功能和定义格式都与普通的类定义相同。 说明: (1)析构函数不能够被继承,也不能重载。 (2)析构函数的定义可根

文档评论(0)

ipbohn97 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档