欢迎来到天天文库
浏览记录
ID:50350147
大小:337.50 KB
页数:30页
时间:2020-03-08
《C++程序设计 教学课件 作者 王春玲 第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章继承和派生本章主要内容1.继承的概念。2.派生类的定义和派生类对基类成员的访问权限。3.派生类的构造函数和析构函数。4.基类指针与派生类指针的使用。5.多继承的二义性和虚基类。6-1继承的概念继承(Inheritance)就是在一个已存在的类的基础上建立一个新类,实质就是利用已有的数据类型定义出新的数据类型。在继承关系中:被继承的类称为基类(Baseclass)(或父类)定义出来的新类称为派生类(Derivedclass)(子类)派生类不仅可以继承原来类的成员,还可以通过以下方式扩充新的成员:(1)增加新的数据成员(2)增加新的成员函数(3)重新定义已有
2、成员函数(4)改变现有成员的属性基类1基类2……基类n派生类1派生类2多重继承单继承:派生类只有一个直接基类。多重继承:派生类同时有多个直接基类。基类派生类1派生类2单继承6-2派生类的定义6-2-1单继承的定义class派生类名:访问方式基类名{派生类中的新成员}其中:(1)class是定义类的关键字;派生类名由用户自己命名。(2)在冒号“:”后的内容告诉系统,这个派生类是从哪个基类派生的以及在派生时的继承方式是什么。(3)继承方式即访问方式,可以为public、protected或private,如果省略,则默认为private方式。(4)基类名必须是程序
3、中已有的一个类的类名。(5)大括号内的部分是派生类中新定义的成员或是对基类成员的改造。6-2-2多继承的定义class派生类名:访问方式基类名1,访问方式基类名2……{……};其中:(1)继承方式为public、protected或private,功能同单一继承。(2)在冒号“:”后要列出派生类的所有基类及其继承方式,并用逗号做分隔符。6-2-3派生类的成员构成派生新类经历了三个步骤:(1)吸收基类成员派生类继承和吸收了基类的全部数据成员和除了构造函数、析构函数之外的全部成员函数。(2)改造基类成员一是基类成员的访问方式问题;二是对基类数据成员或成员函数的覆盖
4、。(3)添加新成员保证了派生类在功能上比基类有所发展。6-3派生类对基类成员的访问1.公有继承(public继承方式)基类中public和protected成员的访问属性在派生类中不变;而基类中的不可访问成员和private成员在派生类中不可访问。注意:不可访问成员与私有成员的区别。2.私有继承(private继承方式)基类中public和protected成员都以private成员出现在派生类中;而基类中的不可访问成员和private成员在派生类中不可访问。相当于中止了基类功能的继续派生!3.保护继承(protected继承方式)基类中public和prot
5、ected成员都以protected成员出现在派生类中;而基类中的不可访问成员和private成员在派生类中不可访问。类的继承方式对基类成员的访问属性控制基类成员作为派生类成员公有继承保护继承私有继承public成员public成员protected成员private成员protected成员protected成员protected成员private成员private成员不可访问不可访问不可访问不可访问成员不可访问不可访问不可访问【例6-1】验证公有继承方式下,基类和派生类的成员的访问特性。私有继承方式保护继承方式6-4派生类的构造函数和析构函数派生类的构造函
6、数:一方面负责调用基类的构造函数对基类成员进行初始化;另一方面还要负责对基类的构造函数所需要的参数进行必要的设置。6-4-1单继承方式下派生类的构造函数派生类名::派生类构造函数名(总参数列表):基类构造函数名(参数列表){派生类中新增数据成员初始化语句}【例6-2】设计一个点类Point,包含横、纵坐标两个数据成员,由它派生出圆类Circle,添加一个半径数据,并求其面积。测试基类的构造函数和派生类的构造函数的执行顺序。【例6-3】定义一个描述圆的类Circle和一个描述圆柱体的类Cylinder,并计算其相应的面积。在C++中,处理同名函数时有以下3种基本
7、方法:①根据函数参数的特征进行区分。如:max(int,int)max(float,float)②根据类对象进行区分。cylinder.area()circle.area()③使用作用域运算符“::”进行区分,如:Ccircle::area()6-4-2多继承方式下派生类的构造函数派生类名::派生类构造函数名(参数表):基类名1(参数表1),基类名2(参数表2),……{派生类中新增数据成员初始化语句}在多重继承下,系统首先执行各基类的构造函数,然后再执行派生类的构造函数;处于同一层次的各基类构造函数的执行顺序与声明派生类时所指定的各基类顺序一致,而与派生类的构
8、造函数定义中所调用的基类构造函数的顺序
此文档下载收益归作者所有