c++语言简明教程 教学课件 作者 吴延海_第4章.ppt

c++语言简明教程 教学课件 作者 吴延海_第4章.ppt

ID:50082256

大小:447.00 KB

页数:131页

时间:2020-03-08

c++语言简明教程 教学课件 作者 吴延海_第4章.ppt_第1页
c++语言简明教程 教学课件 作者 吴延海_第4章.ppt_第2页
c++语言简明教程 教学课件 作者 吴延海_第4章.ppt_第3页
c++语言简明教程 教学课件 作者 吴延海_第4章.ppt_第4页
c++语言简明教程 教学课件 作者 吴延海_第4章.ppt_第5页
资源描述:

《c++语言简明教程 教学课件 作者 吴延海_第4章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章类的继承性4.1继承4.2子类对象4.3多重继承本章小结在前面的章节里我们学习了基本类,已经可以将数据、操作封装在一起,体现了面向对象思想里的封装和信息隐藏特性。不过,细心的读者可能会发现前面学习的Cat类和Mouse类有些地方非常相似,如二者都有name、weight、age等属性(成员变量)及相应的行为(成员函数),且是在两个类里分别实现的。由此不难想到,如果有更多相似的类又该如何呢?如果我们为每个新类都添加name、weight、age等属性及相应的行为,那样不仅操作繁琐,而且也不便维护。解决这类问题的一个办法是继承。电饭煲、电视机、洗衣机、微波炉都可以看成类,

2、同时它们都是家用电器(一个更一般的类)。在面向对象术语中,我们可以说上述的每一个类都是家用电器的子类(subclass),也可以说家用电器是这些类的超类(superclass)。4.1继承家用电器类具有electricWire、onOffSwitch属性,也具有turnOn()和turnOff()操作。因此如果某物是家用电器,则立即能想到它具有家用电器类的属性和操作。   在面向对象技术中,这种关系称做继承。继承是指一个子类继承父类(或称为基类)的特征(属性和操作)。在继承一个父类时,可以在子类中增加新的属性和操作,也可以重定义从父类中继承下来的操作。父类的特征并不受子类的

3、影响,反之,在理想情况下,父类的内部实现的变化不会影响子类。当然,一个子类可有多个父类,这种情况称为多重继承。继承带来的好处是软件的复用,使用继承可以在已有软件构件的基础上构造新的软件,从而提高软件的生产率并保证软件的质量。   简而言之,继承性是父类和子类之间共享属性和操作的机制;继承性具有传递性;继承性包括单继承和多重继承。继承性具有以下作用:使软件系统具有开放性;更好地进行抽象与分类;增强代码的重用率;提高可维护性。4.1.1继承的本质Cat类和Mouse类有些地方很相似,如二者都有name、weight、age等属性,但却是不同的类:Cat有mew(喵喵叫)能力,而

4、Mouse会squeak(吱吱叫)。   前面我们用两个类来描述这两种动物,虽然可行但两者的共同点和内在联系没有体现出来,而且对相同的属性进行了重复开发,如果要增加新的类Dog,会让人觉得繁琐。但是如果只用一个类来描述这些不同的动物,则无法描述清楚,因为它们不是完全相同的。我们需要一个更好的方法,既能把Cat、Mouse、Dog的特点描述清楚,又能减少重复开发。这个方法的答案是继承。继承方法可以让我们基于已有的类(基类)来扩展(派生)成新类。新类具有基类的所有属性和操作,还可以在基类的基础上做一些变动(增、改)。继承本质上是人们对事物的认知过程的一个模拟,人类从低级社会向高

5、级社会发展,其获得的知识都在增长,事物的发展总是从低级到高级、从简单到复杂、从抽象到具体。图4.1是Cat、Mouse、Dog、Animal之间的关系,图中Animal是一个抽象的概念,Cat、Mouse、Dog是具体的Animal,任何Animal都有name、weight、age等属性,也就是说Cat、Mouse、Dog都有相同的属性。Cat、Mouse、Dog也有不同的能力,如Cat会mew、Mouse会squeak、Dog会bark。图4.1Cat、Mouse、Dog、Animal之间的关系如果要描述Cat、Mouse、Dog,可以写三个不同的类来描述,但会重复开发

6、属性甚至功能。不过,我们可以采用继承方法来解决这个问题,先写一个Animal类(称为基类、父类),描述所有动物具有的共同属性、功能,然后建立Cat、Mouse、Dog类(称为派生类、子类),让它们继承Animal,并分别作细节上的改动。后一种方法更简单,更符合人们的思维习惯。4.1.2继承的实现在例4.1中定义了两个子类:Cat、Mouse,继承方式都是public的,父类是Animal。可以看出子类继承了Animal的public方法,并且可以自己定义新的方法,达到了扩展新类的目的。继承方式稍后再详细介绍。【例4.1】以Animal类为例,展示继承的实现方法。//----

7、---------------------//c0401.cpp//-------------------------#include"iostream.h"#include"string.h"classAnimal//Animal类为父类{private:charname[30];floatweight;intage;public://构造函数0,无参数构造函数Animal(){strcpy(name,"Animal");weight=5;age=2;cout<<"Animal()iscalled"<

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

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

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