第九章 类的继承与多态性ppt课件.ppt

第九章 类的继承与多态性ppt课件.ppt

ID:59015181

大小:143.00 KB

页数:33页

时间:2020-09-26

第九章 类的继承与多态性ppt课件.ppt_第1页
第九章 类的继承与多态性ppt课件.ppt_第2页
第九章 类的继承与多态性ppt课件.ppt_第3页
第九章 类的继承与多态性ppt课件.ppt_第4页
第九章 类的继承与多态性ppt课件.ppt_第5页
资源描述:

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

1、第九章类的继承与多态性【教学目的与要求】了解派生类的定义和使用方法,理解派生类的构造函数、析构函数,虚函数的定义和使用。【教学重点与难点】派生类的定义,派生类构造函数、析构函数的调用顺序,多态性的实现。【教学方法】讲授与上机相结合。9.1类的继承9.2类的虚函数与多态性9.3类的静态成员9.4类模板本章内容9.1类的继承继承是面向对象程序设计的最重要的特点之一,是软件重用的一种重要形式,是对实际问题中分层特性的一种自然描述。类的继承创建了一种类的层次结构(类等级、类族)。建筑物类层次图:建筑物房屋桥梁纪念塔平房楼房办公楼居民楼施工单位、竣工日期等建筑面积建筑高

2、度、宽度、长度塔高、形状庭院面积楼层数、电梯数值班电话居民户数、居住人数继承的实质:是从已有的类建立新类。 通过特殊化已有的类来建立新类的过程称为类的派生。原有的类叫做基类或父类;新建立的类叫做派生类或子类。通过继承,派生类自动拥有基类的所有成员(数据成员和成员函数)。9.1.1派生类定义的格式class<派生类名>:<基类表>{<派生类自己的成员>};派生类名:是用户命名的标识符,用于标识新定义的类。其中:基类表:用于指明派生类的基类,基类可以有一个或多个,单继承:派生类只有一个直接基类,简单。多继承:派生类有多个直接基类,复杂、易出错,但功能强大。每个基类

3、前面应有一个继承权限指明符(继承方式)。public:公有继承(公有派生),是最常用的。基类的公有成员在派生类中仍是公有的;基类的保护成员在派生类中仍是保护的;基类的私有成员在派生类中是不可直接访问的。继承权限指明符:用于规定基类成员在派生类中的访问属性。private:私有继承(私有派生),不利于进一步派生基类的公有成员和保护成员在派生类中是私有的;基类的私有成员在派生类中是不可直接访问的。protected:保护继承(私有派生),是新生事物。基类的公有成员和保护成员在派生类中是保护的;基类的私有成员在派生类中是不可直接访问的。默认的继承权限指明符为priv

4、ate。派生类构成示意图:派生类成员基类部分新定义部分私有成员保护成员公有成员私有成员保护成员公有成员不能直接访问每个派生类对象所占有的存储空间的大小等于其基类部分的所有数据成员占有的存储空间的大小与新定义部分的所有数据成员占有的存储空间的大小的总和。9.1.2格式举例例9-1:单继承举例(P267)注意:基类成员的初始化和同名成员的调用。由例9-1可以看出:1、在派生类的构造函数中,对属于基类的成员进行初始化是通过在初始化表中显式调用基类的构造函数来实现的,格式为:基类名(实参表)。2、在派生类中定义的成员可以与基类中定义的成员具有相同或不同的名字。若相同时

5、,访问当前类中定义的成员直接写成员名即可,而访问基类中的同名成员时,必须在成员名前加上基类名和类区分符(::)。例9-2:多继承举例。(P269)注意:构造函数和析构函数的调用顺序。1、当一个派生类中同时含有类成员时,派生类构造函数的执行顺序是:首先调用基类的构造函数实现对基类成员的初始化,接着调用成员所属类的构造函数实现类成员的初始化,最后实现对新定义的非类成员的初始化。由例9-2可以看出:3、当有多个基类时,基类构造函数的调用顺序:取决于派生类声明时基类表中的顺序,而与初始化表中的顺序无关。析构函数的调用顺序正好相反。2、析构函数的执行顺序正好相反:先执行

6、派生类的析构函数,接着执行类成员的析构函数,最后执行基类的析构函数。9.1.3应用举例例9-3:编写一个程序计算出球、圆柱和圆锥的表面积和体积。(P274)分析:由于计算它们都需要用到圆的半径,所以可先定义一个圆类,它包含一个保护数据成员为半径,以便派生类使用。把球类、圆柱类和圆锥类定义为圆的派生类。9.2类的虚函数与多态性对于用户定义的数据类型,C++允许同一类型对象之间相互赋值,不允许不同类型对象之间直接赋值,若非要赋值不可,则必须经过强制类型转换。对于基类和派生类来说,情况有所不同,由于派生类对象包含基类的所有成员,因此可以把派生类看作是基类的兼容类。所

7、以C++允许:1、把派生类对象的地址赋给基类指针对象,通过这个指针可以访问所指的基类对象,即整个派生类对象中的基类部分;2、允许用派生类对象初始化基类的引用对象,通过这个引用也可以访问所对应的基类对象;3、允许派生类对象向基类对象直接赋值,它将把派生类对象中属于基类部分的值赋给基类对象。在一个含有基类和派生类的类系列中,各个类中可以定义原型完全相同(即具有相同的函数名、返回值类型、参数表)的成员函数,这些函数在功能上是相似的,但是对各自的类来说,其实现往往是不同的。例如:例9-3中的Area和Volume函数。当一个派生类对象的地址赋给一个基类指针后,通过基类

8、指针只能访问派生类对象中的基类部分,而

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

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

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