第04章 继承性和多态性2009.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 继承性与多态性 第4章 继承性与多态性 引 述 [引例] 一个类中包含了若干数据成员和成员函数。 在不同的类中,数据成员和成员函数是不相同的。但有时两个类的内容基本相同或一部分相同。 如以下两个类定义: 4.1 继承与派生 [解决方法]C++提供的继承机制。 在C++中,所谓“继承”就是在已存在的类的基础上建立一个新的类。已存在的类称为“基类”或“父类”;新建立的类称为“派生类”或“子类”。 派生类也可作为基类再派生新的类,形成类的层次结构。 继承与派生的目的 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 通过继承派生新类的优越性 类的派生是一种演化、发展的过程,即通过扩展、更改和特殊化,从一个已知类出发建立一个新类的过程。 由上到下,是一个具体化、特殊化的过程;由下到上,是一个抽象化的过程。 通过继承派生新类的优越性 通过类的派生可以建立具有共同关键特征的对象家族,从而实现代码重用,提高编程效率,降低开发成本。 更有效地保持共有特性的一致性。 提高系统的可维护性。 实现多态性的基础。 通过继承派生新类的优越性(具体) 当原来使用的数据结构不适应新系统的需求,或原来提供的功能需要扩充,或原来的性能不能满足现在的要求时,派生类的成员函数可以调用基类的成员函数,并在此基础上增加必要的程序代码; 当需要完全改变原有操作的实现算法时,可以在派生类中实现一个与基类成员函数同名而算法不同的成员函数;当需要增加新功能时,可以在派生类中定义一个新的成员函数。 使用户在开发新的应用系统时不必完全从零开始,可以继承原有的相似系统的功能或者从类库中选取适用的类,再派生出新的类以实现所需要的功能。 4.1.1 派生类的声明 在C++中,派生类的一般声明语法为: class 派生类名:[继承方式] 基类名 { 派生类成员声明; }; 继承方式 继承方式规定如何访问从基类继承的成员。 继承方式关键字为private、public和protected,分别表示私有继承、公有继承和保护继承。 若不显式地给出继承方式关键字,系统的默认值为私有继承(private)。 类的继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限。 4.1.2 派生类生成过程 派生类生成过程 派生新类的过程,实际是经历了三个步骤: 1. 吸收基类成员 2. 改造基类成员 3. 添加新的成员 吸收基类成员是一个重用的过程,而对基类成员进行调整、改造以及添加新成员就是原有代码的扩充过程,二者是相辅相成的。 派生类生成过程 吸收基类成员 派生类接受了基类中除构造函数和析构函数外的所有成员。 改造基类成员 改变基类成员的访问属性 对基类数据或函数成员的覆盖 添加新成员 给派生类增加适当的数据和函数成员以实现新的功能。 4.1.3 多继承 1. 多继承的声明 在多继承中,各个基类名之间用逗号隔开 多继承的声明语法为: class 派生类名:[继承方式] 基类名1,[继承方式] 基类名2,…,[继承方式] 基类名n { 派生类成员声明; }; 多继承 2. 类族 派生过程中,派生出来的新类也可以作为基类再继续派生新的类。 一个基类可以同时派生出多个派生类。 形成了一个相互关联的类的家族,称为类族。 在类族中: 直接参与派生出某类的基类称为直接基类; 基类的基类甚至更高层的基类称为间接基类。 4.1.4 类的继承方式 在基类内部,自身成员可以对任何一个其它成员进行访问,但是通过基类的对象,就只能访问基类的公有成员。 派生类继承了基类的全部数据成员和除构造、析构函数外的全部函数成员,但是这些成员的访问属性在派生的过程中是可以调整的。 从基类继承的成员,其访问属性由继承方式控制。 不同的继承方式,会导致基类成员原来的访问属性在派生类中有所变化。 不同继承方式的影响主要体现在: 1、派生类成员对基类成员的访问控制。 2、派生类对象对基类成员的访问控制。 访问属性与继承的关系 1.公有继承(public) 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 派生类中的成员函数可直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 通过派生类的对象只能访问基类的public成员。 #include iostream.h class vehicle //基类vehicle类的声明 { private: //私有数据成员 int wheels; protected: //保护数据成员 float weight; p

文档评论(0)

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

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

1亿VIP精品文档

相关文档