chapter 类和对象的继承

chapter 类和对象的继承

ID:14097666

大小:506.00 KB

页数:63页

时间:2018-07-26

chapter 类和对象的继承_第1页
chapter 类和对象的继承_第2页
chapter 类和对象的继承_第3页
chapter 类和对象的继承_第4页
chapter 类和对象的继承_第5页
资源描述:

《chapter 类和对象的继承》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章继承性(inheritance)与类的派生(derivation)4.1派生类(derivedclass)及其对象(object)4.1.1定义第三章中提到,在面向对象程序设计语言中,“类”是一组具有相同数据结构(属性)和相同操作(方法、函数)的集合,是一系列具有相同性质的对象的抽象内容,它描述的不是个别对象而是全体对象的共同特征。“类”是具有相同共性的各事物的集合,是这些事物的统一抽象内容。C++中,“类”被表达为一个具有特定功能的程序块,它提供代码共享(代码重用性),以便用户可以方便地

2、建立所需要的任何数据类型。但一个“类”(基类)无法包含这些事物的全部共性,而只包含主要共性。为包含其它次要共性,可通过继承机制定义、建立其它类(称为派生类)。继承(inheritance)是C++面向对象程序设计的重要特性之一。所谓继承,是建立一个新的类(即直接派生类),从一个或多个已经定义的类(称为直接基类)中继承一部分或全部函数和数据,同时还能重新定义或增加新的数据和函数。继承机制在对象之间建立了派生关系,从而建立类的层次或等级(hierarchyofclasses)。引入继承机制的目的是实

3、现代码可重用性(reusability):一方面可以重新使用先前定义的代码,避免不必要的重复设计;另一方面,如果原代码不能完全满足要求,可以在绝不改变原有代码的情况下,补充新的代码,增加新的功能。请见下图:圆形正方形平行四边形矩形四边形三角形几何图形几何图形上图中,“几何图形”是基类,它包含了几何图形的一些基本共性。它的派生类“三角形”、“四边形”和“圆形”各自包含了本图形的一些次要共性。例如计算面积的表达式,这三个图形都不相同。而“四边形”又可派生出“正方形”、“平行四边形”和“矩形”,从而使

4、它们各自具有不同的具体属性。具体说,例如,先有一个用于测量温度的类(第三章有过类似例子):classtemp{staticdoubletemp;//数据:温度double&ref;//数据:温度变量temp的引用doublemeas();//函数:用于测量温度}过些时候,需要增加控制水温的功能,设计一个新类:classtemp_water{staticdoubletemp;//原有数据:水温double&ref;//原有数据:水温变量temp的引用char*err_msg;//数据:断水警告do

5、ublemeas();//原有函数:用于测量水温voidact_water();//函数:采取动作,开启水阀voidregulate();//函数:调节水阀开启度,以便控制水量和水温}随后可将字符指针char*err_msg初始化为指向字符串“Nocoolingwater”。可以看出,这两个类的内容有不少重复(重复部分已用下划线标出)。为避免重复,可设计新类为能够继承前一个类的全部或一部分内容。可以将前一个类classtemp定义为基类(baseclass),而新类则称为派生类(derivedc

6、lass),如下:classtemp_water:temp{char*err_msg;//数据:断水警告voidact_water();//函数:采取动作,开启水阀voidregulate();//函数:调节水阀开启度,以便控制水量和水温};派生类定义的格式是其类首加上冒号(:)和基类名称(temp)。这个派生出的新类具有以下特点(主要是前两点):1.派生类是基类定义的延续---在派生类中可隐含地具有基类的任何成员(部分或全部)。2.派生类是基类定义的扩充---在派生类中可重新定义新的成员(在第

7、五章中还将看到,可在派生类中改变或扩充基类成员函数的功能)。3.派生类可以是基类的组合---派生类可由多个基类派生而来,此时派生类是所有基类的属性和行为的组合(请见本章§4.3“多继承”)。这称为“可重用(可复用reusable)的软件构件”。其中基类称baseclass(也称父类ancesterclass),派生类称derivedclass(也称子类sub-class)。继承:从一个或多个先前定义过的类(称为直接基类)中接受全部或一部分数据(属性)或/和函数(行为、操作),并且重新定义原有成员

8、并补充定义新的成员,因而形成一个新的低层的类(称为直接派生类)。而该派生类又可用作更低层派生类的直接基类。这样就建立了类的层次(hierarchyofclasses)可用有向无环图(DirectedAcyclicGraph,DAG)来表示继承关系。DAGtempprivatetemp_water绝大部分书中,有向无环图(DirectedAcyclicGraph,DAG)的连接线使用向上的箭头,只有J.Grabe:UpandRunningwithC++书中使用向下的箭头(而按照数据结构”图”的定义

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。