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

第8章继承与派生资料.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 继承与派生 8.1 类的继承与派生 8.2 单继承 8.3 多继承 8.4 虚基类 8.1 类的继承与派生 8.1.1 继承和派生的概念 8.1.2 派生类的定义 8.1.3 继承方式 8.1.1 继承和派生的概念 继承就是在原有类的基础上利用现有的类来定义新的类,新类不 仅能获得已有类的特性,而且还可以修改获得的特性以及增加新的特 性,这样就可以实现代码的重用。从另外一个角度来看,从已有类产 生新类的过程就是类的派生。新类继承原有类的属性和方法,被继承 的类称为基类,又称为父类、超类。新类称为派生类,又称为子类、 继承类。 在派生类中不需要重复定义基类中已有的属性和方法,只需要定 义基类没有而派生类新增加的特性即可。继承和派生的关系就好比物 种的遗传和变异的关系。 基类比派生类更为抽象和一般化,派生类比基类更为具体和个性 化。例如人类具有的属性有姓名、性别、年龄、民族等,而教师类除 了具有人类具有的所有属性外,还有一些特殊的属性,如职称、专业 等;学生类除了具有人类具有的所有属性外,还有班级、学号等特殊 属性;干部类除了具有人类具有的所有属性外,还有职务等特有的属 性。这样就可以把人类作为基类,教师类、学生类、干部类作为人类 的派生类。而在学生中还有学生干部,具有学生和干部二者的属性, 既有班级、学号属性,又有职务属性,这样学生干部类就可以将学生 类和干部类共同作为自己的基类。上述类的继承关系如图8-1所示。 如果派生类是从一个基类派生的,这种继承关系称为单继承;如果派 生类从多个基类派生的,称这种继承为多继承。通常,有多于一个基类的 派生类都为多继承。 在“人类—学生类—学生干部类”这个单继承分支中,人类是基类,学 生类既是它上一层的派生类,又是他下一层的基类。从这一继承分支中可 以发现,越靠近继承层次上层的类描述越抽象,而靠近继承层次的下层的 类描述越具体。 派生类同样也可以作为基类再派生新的类,这样就形成了类的层次结 构。类的继承和派生的层次结构,可以说是人们对现实生活中事物进行分 类、分析和认识的过程在程序设计中的体现。现实世界中的任何事物都具 有与其他事物相区别的特性,与另外一些事物又具有同性。在人们认识事 物的过程中,根据事物的具体特征进行分类,然后在进行分析和描述。 面向对象程序设计的继承与派生机制,其最主要的目的是实现代码的 复用和扩充。因此,保留基类成员就是对原有代码的复用,而对基类成员 进行调整、改造以及添加新成员就是对原有代码的扩展和补充,两者缺一 不可,相辅相成。 8.1.2 派生类的定义 在C++中定义派生类的格式为: class 派生类名:继承方式 基类名 { private: 新增数据成员和成员函数声明; public: 新增数据成员和成员函数声明; protected: 新增数据成员和成员函数声明; }; 例如: class A { }; class B:public A //类A为直接基类。 { }; 间接基类可写为: class A { }; class B:public A { }; class C:public B //类A是间接基类,可扩展到任意级数 { }; 从基类派生出新类时,可以在派生类内完成以下功能: ⑴可以增加新的数据成员和成员函数; ⑵可以重新定义基类中已有的成员函数; ⑶可以改变现有成员的属性。 8.1.3 继承方式 1.公有继承 在公有继承情况下,基类的公有成员在派生类中仍是公有的。派生类 的对象可以直接使用基类所有的公有方法,除非这些方法在派生类中已 经被重新定义。基类的被保护成员在派生类中仍被保护。基类的私有成 员虽然被派生类继承,但是仍旧保持基类的私有属性,所以派生类的成 员不能直接访问它。外部使用者只能通过派生类的对象访问继承来的公 有成员。而无论是派生类的成员还是派生类的对象,都无法访问基类的 私有成员。 派生类继承了在其基类中声明的数据结构,在派生类中的数据成员和 成员函数的声明中不用再声明被继承的数据结构,而只需声明派生类中 没有的数据结构。 在公有派生类中: ⑴基类的公有成员在派生类中仍是公有成员。 ⑵基类的保护成员在派生类中仍是保护成员。 ⑶基类的私有成员在派生类中是不可访问的。 【例8.1】公有继承举例。 #include iostream.h #include string.h class Student

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档