10章 继承.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文档。上传文档
查看更多
10章继承ppt课件

第10章 继承 第8、9章节的内容主要围绕在面向对象编程的“抽象性”(如何将问题空间的事物抽象成类,这是个建模的过程)和“封装性”(保证数据的私密性,只提供供外部访问的接口),本章和随后一章来探讨“继承性”和“多态性”。继承的概念不难理解,多少有点“不劳而获”的意思,实际也是如此,面向对象程序设计的一个重要特点就是可以在既有类的基础上定义新的类,而不用将既有类的内容重新书写一遍,这称为“继承”(inheritance),既有类称为“父类”或“基类”,在它的基础上建立的类称为“派生类”、“导出类”和“子类”,在本章节的描述中,统一使用“基类”和“派生类”的概念。 10.1 什么是继承 继承是很自然的概念,广泛存在于现实世界中,对面向对象的程序设计而言,继承性的引入意义巨大,首先,程序员可以按现实世界、按自然的方式去思考和解决问题,组织信息,提高了效率,其次,可以复用基类的代码,并可以在继承类中增加新代码或者覆盖基类的成员函数,为基类成员函数赋予新的意义,实现最大限度的代码复用。 10.1.1 简单示例 通过例子来看什么是继承,如代码10-1。 代码10?1中,point类是二维点类,现在要构建一3维点类point3D,则point3D类可以从point类继承而来,point类称为“基类”、point3D类称为“派生类”。在point3D类内不用再对xPos和yPos进行定义性声明,只要增加一个private成员zPos即可,还可在point3D类内定义与point类某个成员函数同名的函数以实现功能覆盖,如point3D中的disp函数实现了point类中disp函数不同的功能。根据需要可再point3D类增加其他一些成员函数和数据成员,如calcSum函数。 10.1.2 继承的层次性 任何一个类都可以派生出新类,派生类还可以再派生出新的类,因此,基类和派生类是相对而言的。一个基类可以是另一个基类的派生类,这样便构建了层次性的类结构,如所示,类B是A的派生类,同时又派生了新类C,B又可以看作是C的基类。 10.2 派生类 派生有多种方式,不同的派生方式下,派生类对基类成员的访问权限以及外部对基类成员的访问权限有所不同,本节详细讨论不同的派生方式。 10.2.1 public派生与private派生 C++中,利用基类派生其子类(派生类)的基本格式为: class 派生类名:派生方式 基类名 { private: 新增私有成员列表; public: 新增公开成员列表; }; 如果需要,派生类可以从多个基类继承,也就是多重继承,这将在后面介绍。通过继承,派生类自动得到了除基类私有成员以外的其它所有数据成员和成员函数,在派生类中可以直接访问,从而实现了代码的复用。派生方式是指public派生和private派生,两种派生方式的不同点如所示。 10.2.2 protected成员与protected派生 在第8章和第9章给出的示例中,数据成员多设定为private成员,也就是私有成员,私有成员只能被本类的成员函数所访问,不能通过“对象名.成员”的形式来访问。如果想做到基类的某些成员只能在派生类中访问,而不被外部的函数或对象访问,用private派生和public派生是无法办到的。首先,基类中的私有成员无论采用public派生还是private派生,在外部或其他类(包括派生类)中都是不可见的,其次,类中的public成员在public派生时,不仅可以在派生类中访问,也可以在外部或其他类中访问,再次,类中的public成员在private派生时,虽然只能在派生类内访问,在外部或其他类中无法访问,但用派生类再派生下一级的类时,基类中的所有成员都无法在“派生类的派生类”中访问。 为解决这一问题,C++引入了protected成员,protected类型的成员是一种区分血缘关系内外有别的成员,在派生类中可以访问protected成员,但在外部或其他类中,protected成员和private成员一样,无法被访问。 10.3 多基派生 派生类只有一个基类时,称为单基派生,在实际运用中,我们经常需要派生类同时具有多个基类,这种方法称为多基派生或多重继承,是双基继承的示意,在实际应用中,还允许使用三基甚至是更多基继承。 10.3.1 多基派生的声明和定义 在C++中,声明和定义具有两个以上基类的派生类与声明单基派生类的形式类似,只需将要继承的多个基类用逗号分开即可,如 派生类名(参数表):基类名1(参数表1),基类名2(参数表2),…,基类名n(参数表n) { private: 新增私有成员列表; public: 新增公开成员列表; }; 10.3.2 二义性问题 一般来说,在派生类中对基类成员的访问应当具有唯一性,但在多基继承时,

文档评论(0)

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

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

1亿VIP精品文档

相关文档