面向对象编程技术第七章派生与继承优秀PPT.ppt
《面向对象编程技术第七章派生与继承优秀PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象编程技术第七章派生与继承优秀PPT.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象编程技术第七章派生与继承第一页,本课件共有53页本章主要内容本章主要内容1.类的继承与派生的提出2.派生类的定义与相关概念3.三种基本继承方式4.派生类的构造与析构函数5.派生类的成员标示与访问6.虚基类7.赋值兼容规则第二页,本课件共有53页类的继承与派生的提出类的继承与派生的提出问题:问题:1.我会使用windows98,我需要重新学习XP操作系统吗?2.我定义了一个描述点的类,如何在定义一个描述矩形的类?现实思维模式现实思维模式.WH事物发展有事物发展有其延续性!其延续性!第三页,本课件共有53页类的继承与派生的提出类的继承与派生的提出继承的目的继承的目的:实现数据、代码的重用。
2、派生的目的派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有数据、代码进行改造。返返 回回第四页,本课件共有53页派生类的定义与相关概念派生类的定义与相关概念定定义义格格式式:class 派生类名:继承方式1 基类名1,继承方式n 基类名n成员声明;注:继承方式注:继承方式1.公有继承public2.私有继承private3.保护继承protected1.保持已有类的特性而构造新类的过程称为保持已有类的特性而构造新类的过程称为继承继承。2.在已有类的基础上新增自己的特性而产生新类的过程称为在已有类的基础上新增自己的特性而产生新类的过程称为派生派生。3.被继承的已有类称
3、为被继承的已有类称为基类基类(父类)。(父类)。4.派生出的新类称为派生出的新类称为派生类派生类(子类子类)。5.直接父类、直接父类、直接直接子类;间接父类、子类;间接父类、间接间接子类子类第五页,本课件共有53页派生类的定义与相关概念派生类的定义与相关概念派生(继承)的内部实现过程:派生(继承)的内部实现过程:添加新成员添加新成员 吸收除构造、析构吸收除构造、析构函数外基类成员函数外基类成员 改造基类成员改造基类成员第六页,本课件共有53页派生类的定义与相关概念派生类的定义与相关概念描述平面的一个点 矩形定义简单实例:简单实例:class pointpublic:point(int a,in
4、t b)x=a,y=b;int getx()int gety()void moveto(int a,int b)private:int x,int y;class rectangle:public pointpublic:public retangle(int x,int y,int width,int heigth):point(x,y)w=width;h=height;privated:int w,h;第七页,本课件共有53页派生类的定义与相关概念派生类的定义与相关概念基类与派生类的对应关系基类与派生类的对应关系:1.单继承:派生类只从一个基类派生。2.多继承:派生类从多个基类派生。3.多
5、重派生:由一个基类派生出多个不同的派生类。4.多层派生:派生类又作为基类,继续派生新的类。第八页,本课件共有53页简化的继承体系图简化的继承体系图返返 回回第九页,本课件共有53页三种基本继承方式三种基本继承方式1.公有继承公有继承(public)1)基类的public和protected成员的访问属性在派生类中保持不变;基类的private成员不可访问(类内类内)2)派生类的对象只能访问基类的public成员(类外类外)第十页,本课件共有53页class Apublic:int x;A(int a,int b)x=a;u=b;void prt()coutpublic x=:xendl;pri
6、vate:int u;举例举例 第一步:定义基类:第一步:定义基类:第十一页,本课件共有53页举例举例 第二第二 步:定义派生类步:定义派生类class B:public Apublic:B(int a,int b,int c):A(a,b)y=c;int y;void prt()coutA:x=:A:xendl;A:prt();/cout private base A:u=A:uendl;cout B:y=:yendl;此行错误!此行错误!第十二页,本课件共有53页举例举例 第三步:使用派生类第三步:使用派生类void main()B b(1,2,3);b.prt();/coutb.uend
7、l;运行结果:运行结果:A:x=:1public x=:1 B:y=:31Press any key to continueError!不可直接输出u.第十三页,本课件共有53页1)派生类中:基类public和protected成员变成private成员;基类private成员不可访问。2)通过派生类的对象不能访问基类中的任何成员2.私有继承私有继承(private)如何理解?类外的问题第十四页,本课件共有53页class Apublic:int x;A(int a,int b)x=a;u=b;void prt()coutpublic x=:xendl;private:int u;举例举例 第
8、一步:定义基类:第一步:定义基类:第十五页,本课件共有53页举例举例 第二第二 步:定义派生类步:定义派生类class B:private Apublic:B(int a,int b,int c):A(a,b)y=c;int y;void prt()coutA:x=:A:xendl;A:prt();cout B:y=:yendl;第十六页,本课件共有53页举例举例 第三步:使用派生类第三步:使用派生类void main()B b(1,2,3);b.prt();/coutb.xendl;运行结果:运行结果:A:x=:1public x=:1 B:y=:31Press any key to con
9、tinue私有数据,不可直接输出b.第十七页,本课件共有53页3.保护继承保护继承(public)1)派 生 类 中:基 类 的public和 protected成 员变 成protected成员;基类的private成员不可访问2)派生类的对象不能访问基类中的任何成员第十八页,本课件共有53页protected 成员举例成员举例class A protected:int x;int main()A a;/a.X=5;错误第十九页,本课件共有53页protected 继承class Apublic:int x void show_private()coutprivate of As y=y;v
10、oid show_proteced()coutprotected of As z=z;private:int y;protected:int z;第二十页,本课件共有53页class B:protected Apublic:void out_base_public()coutx=:xendl;/void out_base_private()couty=:yendl;Error!void out_base_proteced()coutz=:zendl;void main()B b;/b.x=19;Errror/b.y=19;Error/b.z=19;Errorb.out_base_public(
11、);b.out_base_proteced();如何访问如何访问A中的中的X、y、z?如何输出如何输出A中的私中的私有成员有成员?间接的方式间接的方式第二十一页,本课件共有53页三种继承方式之间的比较三种继承方式之间的比较返返 回回第二十二页,本课件共有53页派生类的构造与析构函数派生类的构造与析构函数一、构造函数一、构造函数1.基类的构造函数不被继承,需要在派生类中自行声明2.初始化完成:1.基类成员:基类构造函数完成2.内嵌对象成员3.新增成员顺序的思考:顺序的思考:有它的现实有它的现实原形么?原形么?第二十三页,本课件共有53页格式:格式:派生类名:派生类名(参数总表):基类名1(参数)
12、,基类名2(参数),.基类名n(参数),内嵌对象1(参数)内嵌对象n(参数)本类成员初始化赋值语句;派生类的构造函数派生类的构造函数注意:注意:参数的顺序不重要参数的顺序不重要对比组合类的对比组合类的构造函数构造函数第二十四页,本课件共有53页构造函数的调用次序构造函数的调用次序1.调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。2.调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。3.派生类的构造函数完成新增成员的初始化。注意注意:派生类的析构函数的调用次序与构造函数正:派生类的析构函数的调用次序与构造函数正好相反好相反为什么?第二十五页,本课件共有53页举例举例:
13、讨论构造函数的调用次序问题讨论构造函数的调用次序问题class B1/基类B1,构造函数有参数public:B1(int i)coutconstructing B1 iendl;class B2/基类B2,构造函数有参数public:B2(int j)coutconstructing B2 jendl;class B3/基类B3,构造函数无参数public:B3()coutconstructing B3*endl;第二十六页,本课件共有53页class C:public B2,public B1,public B3 public:C(int a,int b,int c,int d):B1(a)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 技术 第七 派生 继承 优秀 PPT
限制150内