第04章继承性与多态性.doc

第04章继承性与多态性.doc

ID:58839327

大小:78.50 KB

页数:23页

时间:2020-09-24

第04章继承性与多态性.doc_第1页
第04章继承性与多态性.doc_第2页
第04章继承性与多态性.doc_第3页
第04章继承性与多态性.doc_第4页
第04章继承性与多态性.doc_第5页
资源描述:

《第04章继承性与多态性.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第4章继承性与多态性4.1继承性与派生4.1.1继承的概念所谓继承(inheritance)就是利用已有的数据类型定义出新的数据类型。在继承关系中,被继承的类称为基类(baseclass)或父类,而通过继承关系定义出来的新类则被称为派生类(derivedclass)或子类。派生类既可以对基类的性质进行扩展又可以对基类进行限制,从而得到更加灵活、适用的可重用模块,大大缩短了程序的开发时间。一个派生类既可以从一个基类派生也可以从多个基类派生。从一个基类派生称为单继承;从多个基类派生称为多重继承。1.单继承单继承的定义形式如下:class派生类名:访问方

2、式基类名{派生类中的新成员};其中,派生类名是新定义的类名。基类名必须是程序中已有的一个类。在单继承中,每个类可以有多个派生类,但是每个派生类只能有一个基类。例如:classA{...};classB:publicA{...};2.多重继承所谓多重继承是指派生类从多个基类中派生而来的。定义多重继承类的方式如下:class派生类名:访问方式1基类名1,访问方式2基类名2……{派生类中的新成员};例如:classA{...};classB{...};classC:publicA,publicB{...};从定义格式上来看,多重继承与单继承的区别主要是多

3、重继承的基类多于一个。3.访问方式不管在单继承还是在多重继承的定义格式中,访问方式,即继承方式,可以为public、private或protected,如果省略,则默认为private方式。访问方式为public方式时,这种继承称为公有继承;访问方式为private方式时,这种继承称为私有继承;访问方式为protected方式时,这种继承称为保护继承。4.1.2派生类的生成过程在给出了派生类的定义和相应成员函数的实现代码后,整个派生类的定义就算完成了,这是就可以利用该类定义相应的对象处理实际问题了。由于派生类是在基类的基础上经过继承而产生的,所以搞

4、清派生类中到底有哪些成员对于更好的使用派生类是很重要的。事实上,派生新类经历了三个步骤:1.吸收基类成员派生类继承吸收了基类的全部数据成员以及除了构造函数、析构函数之外的全部函数成员。也就是说,基类中的构造函数和析构函数不能继承到派生类中的。2.改造基类成员对继承到派生类中基类成员的改造包括两个方面:一是基类成员的访问方式问题,这由派生类定义时的访问方式来控制;二是对基类数据成员或成员函数的覆盖,也就是在派生类中定义了与基类中同名的数据成员或函数成员,由于作用域不同,于是发生同名覆盖,基类中的成员就被替换成派生类中的同名成员。3.添加新成员在派生类

5、中,除了从基类中继承过来的成员外,还可以根据需要在派生类中添加新的数据成员和成员函数,以此实现必要的新功能。可以看出,在派生类中可以添加新成员的机制是继承和派生机制的核心,保证了派生类在功能上比基类有所发展。4.1.3继承方式对基类成员的访问控制前面已经分析,派生类继承和吸收了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员,但这些成员在派生类中的访问属性是可以调整的,这是由派生类定义格式中的继承方式来决定的,也就是继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。由于继承方式可以有public、private和prote

6、cted三种,不同的继承方式会导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。这种访问包括两个方面:一是派生类中新增成员对从基类继承来的成员的访问;二是派生类的外部通过派生类的对象从基类继承来的成员的访问。1.公有继承当类的继承方式为公有继承时,基类中public和protected成员的访问属性在派生类中不变,而基类private成员不可访问。也就是说,基类的public和protected成员在公有继承方式下分别继承为派生类的public和protected成员,派生类中的其他成员可以直接访问它们,在派生类的外部只能通过派生类

7、的对象访问从基类继承来的public成员。而无论是派生类的成员还是派生类的对象都无法访问从基类继承来的private成员。2.私有继承当类的继承方式为私有继承时,基类中的public和protected成员都以private成员出现在派生类中,而基类private成员不可访问。也就是说,基类的public和protected成员在私有继承方式下被继承为派生类的private成员,派生类中的其他成员可以直接访问它们,但在派生类的外部无法通过派生类的对象访问它们。而无论是派生类的成员还是派生类的对象都无法访问从基类继承来的private成员。可以看出,

8、经过私有继承后,所有基类的成员都成为派生类的私有成员,如果进一步派生的话,基类的成员就无法在新的派生类中被访问。因此,经过

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

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

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