网站大量收购独家精品文档,联系QQ:2885784924

[工学]第11章 继承和派生类.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第11章 继承和派生类

第11章 继承和派生类 11.1 基类和派生类 11.2 单继承 11.3 多继承 11.4 虚基类 11.5 应用实例 继承是面向对象程序设计的基本特征之一,是从已有的类基础上建立新类。继承性是面向对象程序设计支持代码重用的重要机制。面向对象程序设计的继承机制提供了无限重复利用程序资源的一种途径。通过C++语言中的继承机制,一个新类既可以共享另一个类的操作和数据,也可以在新类中定义已有类中没有的成员,这样就能大大的节省程序开发的时间和资源。 11.1 基类和派生类 继承是类之间定义的一种重要关系。定义类B时,自动得到类A的操作和数据属性,使得程序员只需定义类A中所没有的新成分就可完成在类B的定义,这样称类B继承了类A,类A派生了类B,A是基类(父类),B是派生类(子类)。这种机制称为继承。 称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。派生类可以具有基类的特性,共享基类的成员函数,使用基类的数据成员,还可以定义自己的新特性,定义自己的数据成员和成员函数。 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。图11-1反映了类之间继承和派生关系。 11.1.1 派生类的定义格式 单继承的定义格式如下: class派生类名 :继承方式基类名 { public: //派生类新定义成员 members; private: members; protected: members; }; 其中,派生类名是新定义的一个类的名字,它是从基类名中派生的,并且按指定的继承方式派生的。 继承方式常作用如下三种关键字给予表示: public:表示公有继承; private:表示私有继承,可默认声明; protected:表示保护继承。 多继承的定义格式如下: class派生类名 :继承方式1基类名1,继承方式2基类名2,… { public: //派生类新定义成员 members; private: members; protected: members; }; 11.1.2 派生类的三种继承方式 在介绍公有继承(public)、私有继承(private)和保护继承(protected)的继承方式前,先看一个例子。 例11-2: 参考上述实例,说明公有继承(public)、私有继承(private)和保护继承(protected)是常用的三种继承方式: 1. 公有继承(public)。 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。 2. 私有继承(private)。 私有继承的特点是基类的公有成员和保护成员作为派生类的私有成员,并且不能被这个派生类的子类访问。 3. 保护继承(protected)。 保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。 表11-1 不同继承方式的基类和派生类特性 (1)在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。这里,一定要区分清楚派生类的对象和派生类中的成员函数对基类的访问是不同的。 (2)在私有继承时,基类的成员只能由直接派生类访问,而无法再往下继承。 (3)对于保护继承方式,这种继承方式与私有继承方式的情况相同。两者的区别仅在于对派生类的成员而言,对基类成员有不同的可访问性。 (4)对于基类中的私有成员,只能被基类中的成员函数和友元函数所访问,不能被其他的函数访问。 11.1.3 访问控制 类通过派生定义,形成类的等级,派生类中用“类名 :: 成员”访问基类成员。在建立一个类等级后,通常创建某个派生类的对象来使用这个类等级,包括隐含使用基类的数据和函数。 派生类对基类成员可以有不同的访问方式: 派生类可以覆盖基类成员 派生类不能访问基类私有成员 基类的公有段和保护段成员访问权对派生类保持不变(公有继承) 基类的公有段和保护段成员成为派生类的私有成员(私有继承) 具体说明如下: 1. 定义与派生类同名的成员 如果派生类定义了与基类同名的成员,称派生类的成员覆盖了基类的同名成员,若要在派生类中使用基类同名成员,可以显式地使用类名限定符: 类名 :: 成员 2. 派生类不能访问基类私有成员 3. 公有继承

文档评论(0)

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

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

1亿VIP精品文档

相关文档