- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 继承与派生 7.1 继承与派生 7.2 多继承 7.3 类的继承方式 7.4 派生类的构造和析构函数 7.5 派生中成员的标识与访问 7.6 虚基类 7.1 继承与派生 7.1.1 继承与派生的概念 在面向对象的程序设计中,大量使用继承和派生。例如,我们要定义不同的窗口,因为窗口都具有共同的特征,如窗口标题,窗口边框及窗口最大、最小等,我们不需要也没有必要将每一个窗口定义一遍。这时我们可以先定义一个窗口类(系统的类库中已存在),然后以这个窗口类作为基类派生出其它不同的窗口类。 所谓继承,就是新的类从已有类那里得到已有的特性。从另一个角度来看,从已有类产生新类的过程就是类的派生。已有的类称为基类或父类,产生的新类称为派生类或子类。派生类同样也可以作为基类再派生新的类,这样就形成了类的层次结构。 类的继承和派生的层次结构,可以说是人们对自然界中的事物进行分类、分析和认识的过程在程序设计中的体现。现实世界中的事物都是相互联系、相互作用的,人们在认识过程中,根据事物的实际特征,抓住其共同特性和细小差别,利用分类的方法进行分析和描述。例如,对于交通工具的分类见图7-1。 这个分类树反映了交通工具的派生关系。最高层是抽象程度最高的交通工具,是最具有普遍和一般意义的概念。下层(火车、汽车、飞机和轮船)具有了上层交通工具的特性,同时加入了自己的新特征。而最下层是最为具体的,例如汽车又可分为卡车、小汽车和旅游车。在这个层次结构中,由上到下,是一个具体化、特殊化的过程;由下到上,是一个抽象化的过程。上下层之间的关系就可以看作是基类与派生类的关系。 类的派生实际是一种演化、发展过程,即通过扩展、更改和特殊化,从一个已知类出发建立一个新类。通过类的派生可以建立具有共同关键特征的对象家族,从而实现代码的重用。这种继承和派生的机制对于已有程序的发展和改进是极为有利的。 7.1. 2 派生类的声明 在C++中,派生类的一般声明语法如下: class派生类名:[继承方式]基类名 { 派生类成员声明; }; 其中: ①class是类声明的关键字,用于告诉编译器下面声明的是一个类。 ②派生类名是新生成的类名。 ③继承方式规定了如何访问从基类继承的成员。继承方式关键字为private、public和protected,分别表示私有继承、公有继承和保护继承。如果不显式地给出继承方式关键字,系统的默认值就认为是私有继承(private)。类的继承方式指定了派生类成员以及类外对象对于从基类继承来的成员的访问权限,这将在7.3节中详细介绍。 ④派生类成员指除了从基类继承来的所有成员之外,新增加的数据和函数成员。这些新增的成员正是派生类不同于基类的关键所在,是派生类对基类的发展。当重用和扩充已有的代码时,就是通过在派生类中新增成员来添加新的属性和功能。可以说,这就是类在继承基础上的进化和发展。 例如,从基类vehicle(汽车)公有派生car(小汽车)类的声明形式如下: classvehicle //基类vehicle类的声明 { private: //私有数据成员 intwheels; floatweight; public: //公有函数成员 voidinitvehicle(intin_wheels,floatin_weight); intget_wheels(); floatget_weight(); //... }; classcar:publicvehicle //派生类car类的声明 { private: //新增私有数据成员 intpassenger_load; public: //新增公有函数成员 voidinitcar(intin_wheels,floatin_weight,intpeople=4); intget_passengers(); //... }; 7.1.3 派生类生成过程 在C++程序设计中,进行派生类的声明,给出该类的成员函数的实现之后,整个类就算完成了,这时就可以由它来生成对象进行实际问题的处理。仔细分析派生新类这个过程,实际是经历了三个步骤:吸收基类成员,改造基类成员和添加新的成员。 面向对象的继
您可能关注的文档
- C语言程序设计教程 作者 周海燕 李智 第07章.ppt
- C语言程序设计教程 作者 周海燕 李智 第08章.ppt
- C语言程序设计教程 作者 周海燕 李智 第09章.ppt
- C语言程序设计教程 作者 周海燕 李智 第10章.ppt
- C语言程序设计教程 作者 周海燕 李智 第11章.ppt
- C语言程序设计教程 作者 周海燕 李智 第12章.ppt
- C语言程序设计教程 作者 周海燕 李智 第13章.ppt
- C语言程序设计教程 作者 周海燕 李智 第14章.ppt
- C语言程序设计教程 作者 周海燕 李智 第15章.ppt
- C语言程序设计教程 作者 宗大华 陈吉人 第1章.ppt
- C++程序设计语言 第1-8章 作者 揣锦华_ 第8章 多态性.ppt
- C++程序设计语言 第9-10章 作者 揣锦华_ 第10章 异常处理.ppt
- C语言编程技巧分析 作者 kj第1章 基础知识编程技巧分析.ppt
- C语言编程技巧分析 作者 kj第3章 循环结构编程技巧分析.ppt
- C语言编程技巧分析 作者 kj第4章 数组编程技巧分析.ppt
- C语言编程技巧分析 作者 kj第6章 预处理编程技巧分析.ppt
- C语言编程技巧分析 作者 kj第8章 结构体共用体和枚举类型以及链表编程技巧分析.ppt
- C语言编程技巧分析 作者 kj第9章 位运算编程技巧分析.ppt
- C语言程序设计(第二版) 作者 978-7-302-32355-6 kj-第1章C语言概述.ppt
- C语言程序设计(第二版) 作者 978-7-302-32355-6 kj-第2章数据类型、运算符和表达式.ppt
文档评论(0)