实验五 类的继承与派生.doc

实验五 类的继承与派生.doc

ID:55324521

大小:94.50 KB

页数:18页

时间:2020-05-10

实验五 类的继承与派生.doc_第1页
实验五 类的继承与派生.doc_第2页
实验五 类的继承与派生.doc_第3页
实验五 类的继承与派生.doc_第4页
实验五 类的继承与派生.doc_第5页
资源描述:

《实验五 类的继承与派生.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第一节类的继承与派生一、基本概念继承是面向对象程序设计的一个特性,所谓继承就是在已有类的基础上创建新的类,新类可以从一个或多个已有类中继承成员函数或数据成员,而且新类还可以重新定义或加进新的数据和函数。其中,已有类称为基类或父类,新类称为派生类或子类。在现实世界中许多事物都具有继承性。例如:“汽车”这个类中包括了许多类型,有运输汽车、专用汽车;运输汽车中又包括客车、货车…….;专用汽车中又包括巡逻车、消防车、救护车……..;所有这些类型的车都具有汽车的共同特性即都有发动机、车身、轮胎等共性,还都是自行驱动的。而客车和货车又有所不同,客车用来载客,货车用来拉货,它们有自己

2、不同于其它车的特性,这就是继承。我们把汽车称为基类,把运输汽车、客车、货车称为派生类。通过继承,派生类不仅拥有了基类的属性和行为,而且具有不同于它类的自己的特点。二、派生类的定义与构成当你去水果店买水果的时候,你经常会发现很多同类水果又有了新的品种。比如,“李子”既小又涩,嫁接在梨树上后长出来的李子却硕大、香甜、清脆,比没有嫁接的李子好吃,但它还是李子家族中的一员;所以,可以认为“嫁接李子”是从“李子”中派生出来的。当然,可以把“李子”嫁接在梨树上,也可以嫁接在苹果树上,结出来的都是“李子”,但是各自味道不同。所谓派生就是从已有类中产生一个新的子类。基类就是已存在的可以

3、派生新类的类,如下图中的A、D、E都是基类。派生类就是由基类派生出来的新类,如下图中的B、C、F都是派生类。 1.单继承派生类的定义格式class<派生类名>:<继承方式><基类名>{派生类成员的定义;};其中,“派生类名”是新定义的一个类的名字,它是从“基类名”中派生的,并且按指定的“继承方式”派生。例如:classpeach//基类{datatypecolor,shape;};classsweetpeach:publicpeach//单继承{datatypecolor,shape,taste;};sweetpeach类只是继承自peach类,即sweetpeach类

4、只有一个基类,这就是单继承。2.多继承派生类的定义格式class<派生类名>:<继承方式1><基类名>,<继承方式2><基类名>,…….{派生类成员的定义;};多继承与单继承在定义格式的区别仅在于它们的基类个数不同,单继承的基类只有一个,而多继承的基类有多个,相邻两个基类之间用逗号间隔,每个基类名前都应有一个该基类的继承方式的说明符。例如:classpeach//定义基类:peach{datatypecolor,shape;}; classapple//定义基类:peach{datatypecolor,shape,weight;}; classsweetpeach:pu

5、blicpeach,publicapple//多继承{datatypecolor,shape,taste;};类sweetpeach同时继承自类peach和类apple,这就是多继承。3.继承的作用有的读者可能会问为什么要有继承,继承有什么好处,继承的作用是什么?为了解决这些疑问,我们一起来分析以下例子,从中领悟继承的奥妙。【例10-1-1】分析以下代码。声明一个person类,它包含的成员有name(姓名)、age(年龄)、gender(性别),和output函数,具体定义如下:classperson{public:charname[8];intage;chargen

6、der;public:voidoutput(){}}; 现在要声明一个student类,它包含的成员有name(姓名),age(年龄),gender(性别),department(系),stuno(学号),address(住址),和output函数,具体定义如下: classstudent{public:charname[8];intage;chargender;chardepartment[20];intstuno;intaddress;public:voidoutput(){}}; 从这两个类的声明中可以看出,它们中有些成员数据和成员函数是相同的。这样就存在代码的重

7、复,为了提高代码的可重用性,就引入了继承。即,如果student类以共有继承的方式继承person类,那么student类就可以直接使用person类中的共有成员如name,gander,age和output()函数,这样在student类中就不需要再定义与person类中相同的变量了,只定义person类中没有的在student类中需要的变量。具体实现如下: classstudent:publicperson//student共有继承person类{public:chardepartment[20];intstuno;intaddres

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

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

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