第07章_改.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文档。上传文档
查看更多
第07章_改

北京林业大学 软件教研室 第7章 继承和派生 本章主要内容 (1)理解继承的概念和意义。 (2)理解单一继承、多重继承中基类与派生类之间的关系。 (3)理解并掌握派生类构造函数的编写要求以及派生类对象的构造过程和机理。 (4)掌握虚函数和多态性的概念。 (5)掌握虚函数的定义方法、调用方法及其在实现多态性方面所起到的作用。 (6)了解纯虚函数与抽象基类的概念。 7.1 继承和派生的概念 继承(Inheritance)就是在一个已存在的类的基础上建立一个新类,实质就是利用已有的数据类型定义出新的数据类型。 在继承关系中: 被继承的类称为基类(Base class)(或父类) 定义出来的新类称为派生类(Derived class)(子类) 派生类不仅可以继承原来类的成员,还可以通过以下方式扩充新的成员: (1)增加新的数据成员 (2)增加新的成员函数 (3)重新定义已有成员函数 (4)改变现有成员的属性 多层次继承: 在派生过程中,派生出来的新类同样可以作为基类再继续派生出更新的类,依此类推形成一个层次结构。 直接参与派生出某类称为直接基类; 而基类的基类,以及更深层的基类称为间接基类。 在类的层次结构中,处于高层的类表示最一般的特征,而处于底层的类则表示更具体的特征。 类族: 同时一个基类可以直接派生出多个派生类。 这样形成了一个相互关联的类族。 如,MFC就是这样的类族,它由一个CObject类派生出200个MFC类中的绝大多数。 7.2 单继承 7.2.1 单继承的定义方式 class 派生类名: 访问方式 基类名 { 派生类中的新成员 } 【例7-1】类Build_1是一个关于楼房数据的类。它的数据成员有posi_x、posi_y和area,分别表示楼房位置的经、纬度和建筑面积。它的成员函数只有set1,用于设置数据成员posi_x、posi_y和area的值。让Build_1作为基类,再增加数据成员height、成员函数set2和show来定义派生类Build_2。 class Build_1 { protected: int posi_x, posi_y, area; public: void set1(int x, int y, int a) { posi_x = x; posi_y = y; area = a; } }; class Build_2 : public Build_1 { protected: int height; public: void set2(int h) { height = h; } void show( ); }; void Build_2::show( ) { cout 经度: posi_x endl; cout 纬度: posi_y endl; cout 高度: height endl; cout 面积: area endl; } 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 派生类的构造函数 派生类的构造函数: 一方面负责调用基类的构造函数对基类成员进行初始化; 另一方面还要负责对基类的构造函数所需要的参数进行必要的设置。 派生类名::派生类构造函数名(总参数列表): 基类构造函数名(参数列表) { 派生类中新增数据成员初始化语句 } 在定义派生

文档评论(0)

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

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

1亿VIP精品文档

相关文档