欢迎来到天天文库
浏览记录
ID:56432633
大小:170.00 KB
页数:23页
时间:2020-06-18
《基类和派生类.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章继承一、基类和派生类二、派生类的构造函数和析构函数三、多重继承一、基类和派生类继承是面向对象程序设计的基本特征之一,是支持代码重用的重要机制。通过继承机制,在已有的类基础上建立新类。一个新类既可以共享另一个类的操作和数据,也可以在新类中定义已有类中没有的成员,这样就提供了无限重复利用程序资源的一种途径,大大的节省程序开发的时间和资源。C++中继承是类之间定义的一种重要关系。定义类B时,自动得到类A的操作和数据属性,只需定义类A中所没有的新成分就可完成在类B的定义,这样称类B继承了类A或类A派生了类B,这种
2、机制称为继承。A是基类,B是派生类。派生类可以具有基类的特性,共享基类的成员函数,使用基类的数据成员,还可以定义自己的数据成员和成员函数。注意:在C++中下列成员不能继承:构造函数和析构函数、友元关系、重载的new和delete运算符在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。继承使基类和派生类之间具有了层次关系。B1,B2的派生类(多继承)AB1B2C1C2C3A的派生类(单继承)C3的基类B1,B2的基类A的派生类C1,
3、C2,C3的基类B1的派生类类之间的继承与派生关系1.单继承派生类的定义class派生类名:继承方式基类名{//派生类新定义成员};其中,继承方式是三种继承方式:public,private或protected之一。在派生类的头部明确列出其直接基类,间接基类则不用列出。classA{protected:intaMember;voidfuna(){}};classB:protectedA{protected:intbMember;voidfunb(){}};classC:privateB{protected:in
4、tcMember;};派生类不仅继承了直接基类的成员,同时也继承了间接基类的成员。2.继承方式基类的成员可以有public(公有)、protected(保护)和private(私有)三种访问属性,基类的自身成员函数可以对基类中任何一个其他成员进行访问,但是通过基类的对象,就只能访问该类的公有成员。类的继承方式有public(公有继承)、protected(保护继承)和private(私有继承)三种,不同的继承方式,导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。这里说的访问来自两个方面:一是派
5、生类中的新增成员对从基类继承来的成员的访问;二是在派生类外部通过派生类的对象对从基类继承来的成员的访问。(1)公有继承(public)当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中不变,而基类的私有成员不可访问,即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有成员和保护成员,派生类的其他成员可以直接访问它们。在派生类外部通过派生类的对象只能访问继承来的公有成员,而无论是派生类的成员还是派生类的对象都无法访问基类的私有成员。(2)私有继承(private)当类的继承方式为私有继承
6、时,基类中的公有成员和保护成员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。也就是说基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问它们,但是在类外部通过派生类的对象无法访问。无论是派生类的成员还是通过派生类的对象,都无法访问基类的私有成员。经过私有继承之后,所有基类的成员都成为了派生类的私有成员或不可访问的成员,如果进一步派生的话,基类的全部成员就无法在新的派生类中被访问。因此,私有继承之后,基类的成员再也无法在以后的派生类中发挥作用,实际是相当于中止了
7、基类功能的继续派生,出于这种原因,一般情况下私有继承的使用比较少。(3)保护继承(protected)保护继承中,基类的公有和保护成员都以保护成员的身份出现在派生类中,而基类的私有成员不可访问。这样,派生类的其他成员就可以直接访问它们,但在类外部通过派生类的对象无法访问它们。无论是派生类的成员还是派生类的对象,都无法访问基类的私有成员。比较私有继承和保护继承,可以看出在直接派生类中,对所继承成员的访问是完全相同的。但是,如果派生类作为新的基类继续派生时,二者的就有区别。基类成员的访问权限继承方式派生类中的访问权
8、限派生类之外能否访问在派生类的子类中能否访问publicpublicpublic可访问能protectedprotected不可访问publicprivateprivate不可访问不能protectedpublicprotectedprotected不可访问能protected派生类实际包含的成员可以按访问权限划分为四种:公有成员:是由派生类新声明的或基类的公有成员经公有派生而来的。保
此文档下载收益归作者所有