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