C++继承解说.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter 第六章内容回顾 静态成员 静态成员的需要性 静态成员的使用 静态数据成员 静态成员函数 友元 预习检查 继承的双方是什么关系? 多重继承的概念是什么? 本章目标 继承 类的分解与抽象类 多重继承 多态 7-1 继承 继承是C++语言的一种重要机制 理解继承是理解面向对象程序设计所有方面的关键 通过学习本章 能利用继承现有的类建立新类 能理解继承如何提高软件的重用性级 7-1-1 概念及工作方式 保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。 7-1-1 继承的概念和工作方式 7-1-1 概念及工作方式 继承的工作方式 现有一个学生类Student,要增加研究生类GraduateStudent 由于研究生除了他自己特有的性质外,具有学生的所有性,所以我们用继承的方法来重用学生类。 7-1-1 概念及工作方式 事实上,GraduateStudent的内存布局,也与“gs是研究生,当然也是学生”相吻合。 7-1-2 派生类的构造 派生类可以直接访问基类的保护数据成员 只以接口作沟通。即使基类与子类也不例外。这正是类能够发挥其生命力的原因所在。 在构造一个子类时,完成其基类部分的构造由基类的构造函数去做 7-1-2 派生类的构造 例如,下面的代码定义了研究生类,其中的构造函数实现对基类数据成员的构造: 7-1-3 继承和组合 组合和继承 类以另一个类对象作数据成员,称为组合 如GraduateStudent类组合了Advisor类。 这种场合,称GraduateStudent有一个Advisor; 而在继承的场合, 称Graduatestudent是一个Student。 7-1-3 继承和组合 例如下面的代码中,定义了一个派生类,该类中包含有类对象成员: 类的冗余 7-1-4 类的分解及抽象类 基类的定义 7-1-4 类的分解及抽象类 派生出Saving类 7-1-4 类的分解及抽象类 派生出Checking类 7-1-4 类的分解及抽象类 抽象类 所有的帐户要么是储蓄要么是结算帐户, 而一个Account帐户仅仅是对这两个具体帐户的共性进行分解得到的一个抽象。 Account类是不完整的,因为它缺少具体帐户的操作(专指Withdrawal())。 C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继承。这种类称为抽象类(abstract class)。 一个抽象类至少具有一个纯虚函数。所谓纯虚函数(pure virtual function)是指被标明为不具体实现的虚成员函数。 7-1-4 类的分解及抽象类 声明一个函数是纯虚函数的语法,即让C++知道该函数无定义,在Account类中示例如 下: 7-1-4 类的分解和抽象类 一个抽象类不能有实例对象,即不能由该类抽象来制造一个对象。所以,下面的声明是非法的: 抽象类是作为基类为其他类服务的。 一个Account类包含一个银行帐户的所有特征。 可以通过继承Account,来创建其它类型的银行帐户类 7-1-4 类的分解和抽象类 由抽象类派生具体类 Savings类不是抽象类,因为它用一个完全实在的定义对纯虚函数Withdrawal()进行了重载。Savings类的一个对象知道在Withdrawal( )被调用时怎样执行。 同样,Checking类也如此,该类不是虚的,因为成员函数Withdrawal( )重载了基类中的纯虚函数。 7-2-1 相关概念 我们可以为一个派生类指定多个基类,这样的继承结构被称为多重继承或多继承。 通过学习本节,应能理解: 多继承的工作原理 了解多继承要解决的问题 认识虚拟继承的实质 把握多继承的方法 并能够简单地从多个基类中派生出新类 7-2-2 多重继承的工作方式 到目前为止,所讨论的类层次中,每个类只继承一个父辈,在现实世界中事情通常是这样的。但是一些类却代表两个类的合成。 7-2-2 多重继承的工作方式 沙发床的例子 7-2-2 多重继承的工作方式 其程序代码如下: 7-2-3 C++继承的模糊性 当两个父类有同样的成员时会带来模糊性: 这样导致了名称冲突(name collision),在编译时将予以拒绝。 7-2-3 C++继承的模糊性 程序必须在重量前面说明基类: 在编写应用程序时,程序员还得额外知道类的层次信息,加大了复杂度。这些在单继承中是不会出现的。 7-2-4 继承的访问权限 不同继承方式的影响主要体现在: 派生类成员对基类成员的访问权限 通过派生类对象对基类成员的访问权

文档评论(0)

a336661148 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档