第5章继承与派生.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文档。上传文档
查看更多
第 5 章 继承与派生 本章主要内容 5.1 继承与派生的概念 5.2 派生类的声明方式 5.3 派生类的构成 5.4 派生类成员函数的访问属性 5.5 派生类的构造函数和析构函数 补充:MFC编程基础 5.1 继承与派生的概念 继承性是面向对象程序设计中最重要的机制。 这种机制提供了无限重复利用程序资源的一种途径。 通过C++语言中的继承机制,可以扩充和完善旧的程序设计以适应新的需求。 5.1 继承与派生的概念 保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。 继承与派生问题举例 继承与派生的目的 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 基类与派生类的对应关系 单继承 派生类只从一个基类派生。 多继承 派生类从多个基类派生。 多重派生 由一个基类派生出多个不同的派生类。 多层派生 派生类又作为基类,继续派生新的类。 派生类的声明形式与普通类的声明形式基本相同; 必须在类声明的头部指明它的基类以及继承方式(基类成员的访问属性),如public、private或者protected; 继承方式必须且只能选择一个,缺省默认为private; 单继承和多继承的定义形式; 5.3 派生类的构成 派生类生成过程 三个步骤: (1)吸收基类成员(除构造函数和析构函数外,新类将基类的公有成员全部接受)。因此要慎重选择基类,尽量使继承来的成员发挥作用; (2)改造基类成员(在新类中定义继承方式来控制继承来成员的访问权限;在新类中定义与基类中同名的数据或函数,即“同名覆盖”,实现以新成员取代基类的成员); (3)添加新的成员,包括数据和函数(例如构造函数和析构函数); 派生类是基类的详细定义。 派生类的特点 (1)可以在基类的基础上包含新的成员; (2)可以在新类中隐藏基类的任何函数成员; (3)可以为新类定义新的成员(包括数据和函数)。 5.4 派生类成员函数的访问属性 基类的成员的访问属性:public(公有)、protected(保护)和private(私有); 基类的自身成员可以访问基类中任何其它成员,但是基类的对象只能访问基类的公有成员; 在派生类中,从基类继承来的成员,其访问属性由继承方式控制; 继承方式 不同继承方式的影响主要体现在: 派生类成员函数对基类成员的访问权限(派生类中); 通过派生类对象对基类成员的访问权限(派生类外); 三种继承方式 公有继承 私有继承 保护继承 私有继承(private) 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 通过派生类的对象不能直接访问基类中的任何成员。 私有继承后,中止了基类功能的继续派生,比较少用。 三、保护继承(protected) 基类A的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可直接访问。 派生类B中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 通过派生类的对象不能直接访问基类中的任何成员 若再公有派生,原基类中的public和protected成员可以被新派生类C的成员函数访问。 四、多级派生时的访问属性 类A为基类,类B是类A的派生类,类C是类B的派生类,则类C也是类A的派生类; 类B称为类A的直接派生类,类C称为类A的间接派生类; 类A是类B的直接基类,是类C的间接基类。 例5.4 多层派生的访问属性。 5.5 继承时的构造函数 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化,自动调用基类构造函数完成。 派生类的构造函数可能需要给基类的构造函数传递参数 派生类构造函数的构造条件 在两种情况下,必须定义派生类的构造函数: 1)派生类本身需要构造函数; 2)在定义派生类对象时,其相应的基类对象需调用带有参数的构造函数。 单一继承时的构造函数 派生类名::派生类名(基类所需的形参,本类成员所需的形参) : 基类名(参数表) { 本类成员初始化赋值语句; }; 派生类的析构函数 在派生类中是否要定义析构函数与它所属的基类无关; 派生类析构函数的定义与无继承关系的类的析构函数定义相同,它只负责清理新增的非对象成员; 系统会自动调用基类及对象成员的析构函数来对基类和对象成员进行清理,但执行次序和构造函数正好相反(先派生类,再基类对象,后基类)。 本章小结 理解继承与派生的概念,掌握单继承和多继承的定义方式

文档评论(0)

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

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

1亿VIP精品文档

相关文档