面向对象编程技术第七章派生与继承精选PPT.ppt
《面向对象编程技术第七章派生与继承精选PPT.ppt》由会员分享,可在线阅读,更多相关《面向对象编程技术第七章派生与继承精选PPT.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象编程技术第七章派生与继承第1页,此课件共53页哦本章主要内容本章主要内容1.类的继承与派生的提出2.派生类的定义与相关概念3.三种基本继承方式4.派生类的构造与析构函数5.派生类的成员标示与访问6.虚基类7.赋值兼容规则第2页,此课件共53页哦类的继承与派生的提出类的继承与派生的提出问题:问题:1.我会使用windows98,我需要重新学习XP操作系统吗?2.我定义了一个描述点的类,如何在定义一个描述矩形的类?现实思维模式现实思维模式.WH事物发展有事物发展有其延续性!其延续性!第3页,此课件共53页哦类的继承与派生的提出类的继承与派生的提出继承的目的继承的目的:实现数据、代码的重用。
2、派生的目的派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有数据、代码进行改造。返返 回回第4页,此课件共53页哦派生类的定义与相关概念派生类的定义与相关概念定定义义格格式式:class 派生类名:继承方式1 基类名1,继承方式n 基类名n成员声明;注:继承方式注:继承方式1.公有继承public2.私有继承private3.保护继承protected1.保持已有类的特性而构造新类的过程称为保持已有类的特性而构造新类的过程称为继承继承。2.在已有类的基础上新增自己的特性而产生新类的过程称为在已有类的基础上新增自己的特性而产生新类的过程称为派生派生。3.被继承的已有类称
3、为被继承的已有类称为基类基类(父类)。(父类)。4.派生出的新类称为派生出的新类称为派生类派生类(子类子类)。5.直接父类、直接父类、直接直接子类;间接父类、子类;间接父类、间接间接子类子类第5页,此课件共53页哦派生类的定义与相关概念派生类的定义与相关概念派生(继承)的内部实现过程:派生(继承)的内部实现过程:添加新成员添加新成员 吸收除构造、析构吸收除构造、析构函数外基类成员函数外基类成员 改造基类成员改造基类成员第6页,此课件共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;第7页,此课件共53页哦派生类的定义与相关概念派生类的定义与相关概念基类与派生类的对应关系基类与派生类的对应关系:1.单继承:派生类只从一个基类派生。2.多继承:派生类从多个基类派生。3.多
5、重派生:由一个基类派生出多个不同的派生类。4.多层派生:派生类又作为基类,继续派生新的类。第8页,此课件共53页哦简化的继承体系图简化的继承体系图返返 回回第9页,此课件共53页哦三种基本继承方式三种基本继承方式1.公有继承公有继承(public)1)基类的public和protected成员的访问属性在派生类中保持不变;基类的private成员不可访问(类内类内)2)派生类的对象只能访问基类的public成员(类外类外)第10页,此课件共53页哦class Apublic:int x;A(int a,int b)x=a;u=b;void prt()coutpublic x=:xendl;pr
6、ivate:int u;举例举例 第一步:定义基类:第一步:定义基类:第11页,此课件共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;此行错误!此行错误!第12页,此课件共53页哦举例举例 第三步:使用派生类第三步:使用派生类void main()B b(1,2,3);b.prt();/coutb.uen
7、dl;运行结果:运行结果:A:x=:1public x=:1 B:y=:31Press any key to continueError!不可直接输出u.第13页,此课件共53页哦1)派生类中:基类public和protected成员变成private成员;基类private成员不可访问。2)通过派生类的对象不能访问基类中的任何成员2.私有继承私有继承(private)如何理解?类外的问题第14页,此课件共53页哦class Apublic:int x;A(int a,int b)x=a;u=b;void prt()coutpublic x=:xendl;private:int u;举例举例
8、第一步:定义基类:第一步:定义基类:第15页,此课件共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;第16页,此课件共53页哦举例举例 第三步:使用派生类第三步:使用派生类void main()B b(1,2,3);b.prt();/coutb.xendl;运行结果:运行结果:A:x=:1public x=:1 B:y=:31Press any key to co
9、ntinue私有数据,不可直接输出b.第17页,此课件共53页哦3.保护继承保护继承(public)1)派生类中:基类的public和protected成员变成protected成员;基类的private成员不可访问2)派生类的对象不能访问基类中的任何成员第18页,此课件共53页哦protected 成员举例成员举例class A protected:int x;int main()A a;/a.X=5;错误第19页,此课件共53页哦protected 继承class Apublic:int x void show_private()coutprivate of As y=y;void sho
10、w_proteced()coutprotected of As z=z;private:int y;protected:int z;第20页,此课件共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();b.out
11、_base_proteced();如何访问如何访问A中的中的X、y、z?如何输出如何输出A中的私有中的私有成员成员?间接的方式间接的方式第21页,此课件共53页哦三种继承方式之间的比较三种继承方式之间的比较返返 回回第22页,此课件共53页哦派生类的构造与析构函数派生类的构造与析构函数一、构造函数一、构造函数1.基类的构造函数不被继承,需要在派生类中自行声明2.初始化完成:1.基类成员:基类构造函数完成2.内嵌对象成员3.新增成员顺序的思考:顺序的思考:有它的现实有它的现实原形么?原形么?第23页,此课件共53页哦格式:格式:派生类名:派生类名(参数总表):基类名1(参数),基类名2(参数),
12、.基类名n(参数),内嵌对象1(参数)内嵌对象n(参数)本类成员初始化赋值语句;派生类的构造函数派生类的构造函数注意:注意:参数的顺序不重要参数的顺序不重要对比组合类的构对比组合类的构造函数造函数第24页,此课件共53页哦构造函数的调用次序构造函数的调用次序1.调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。2.调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。3.派生类的构造函数完成新增成员的初始化。注意注意:派生类的析构函数的调用次序与构造函数正好:派生类的析构函数的调用次序与构造函数正好相反相反为什么?第25页,此课件共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;第26页,此课件共53页哦class C:public B2,public B1,public B3 public:C(int a,int b,int c,int d):B1(a),memberB2(d),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 编程 技术 第七 派生 继承 精选 PPT
限制150内