C++程序设计简明教程教学课件王晓东第7章继承.ppt

C++程序设计简明教程教学课件王晓东第7章继承.ppt

ID:50350297

大小:203.50 KB

页数:38页

时间:2020-03-08

C++程序设计简明教程教学课件王晓东第7章继承.ppt_第1页
C++程序设计简明教程教学课件王晓东第7章继承.ppt_第2页
C++程序设计简明教程教学课件王晓东第7章继承.ppt_第3页
C++程序设计简明教程教学课件王晓东第7章继承.ppt_第4页
C++程序设计简明教程教学课件王晓东第7章继承.ppt_第5页
资源描述:

《C++程序设计简明教程教学课件王晓东第7章继承.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章继承7.1概述7.2继承的实现7.3继承方式7.4派生类的初始化和析构7.5虚基类7.6向上映射7.1概述类之间的继承关系是对现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和方法的共享,即派生类可以沿用基类(被继承)的某些特征。如果A类派生出B类,一般约定把A称为基类,把B称为派生类。继承具有传递性,如果C类继承B类,B类又继承A类,则C类继承A类。交通工具交通工具汽车飞机轮船客车卡车基类personclassperson{public:voiddisplay(void);…private:charname[30];longno;intage;c

2、harsex;char*s;…};7.2继承的实现class派生类名:继承方式基类名1,继承方式基类名2…{派生类成员列表;};说明派生类不能继承基类的构造函数和析构函数。继承方式用于说明从基类继承来的成员的访问控制属性。如果派生类有多个基类,称为多重继承;如果派生类只有一个基类,则称为单重继承。在派生类中定义一个与基类成员完全相同的成员,称为同名覆盖。直接使用派生类中的该成员名,就只能访问派生类定义的成员。高校人员类classteacher:publicperson{public:voiddisplay(void);//同名覆盖…private:char*c[3];

3、//主讲课程intsalary;//薪水…};classstudent:publicperson{public:voiddisplay(void);//同名覆盖…private:intcredit;//学分…};classemployee:publicperson{public:voiddisplay(void);//同名覆盖…private:intgrage;//职务级别intsalary;//薪水…};7.3继承方式C++语言提供了3种继承方式,分别是公有继承(public)、私有继承(private)和保护继承(protected)。如果在定义派生类时未声明继承

4、方式,默认的继承方式是private。公有继承基类的公有成员和保护成员在派生类中的访问控制属性不变,而基类的私有成员在派生类中不可访问。classA{public:seta(intx=0);intgeta(void);private:inta;};classB:publicA//公有继承{public:setb(intx=0);intgetb(void);private:intb;};私有继承基类的公有成员和保护成员在派生类中成为私有成员,而基类的私有成员在派生类中不可访问。classB:privateA//私有继承{public:set(intx=0,inty=0)

5、;intgetb(void);voiddisplay(void);private:intb;};保护继承基类的公有成员和保护成员在派生类中成为保护成员,而基类的私有成员在派生类中不可访问。classB:protectedA//保护继承{public:set(intx=0,inty=0);intget(void);voiddisplay(void);private:intb;};派生类的初始化不仅要考虑新增成员的初始化,还要考虑从基类继承来的成员的初始化。由于派生类无法继承基类的析构函数,派生类的析构同样离不开基类析构函数的支持,其执行顺序与构造函数正好相反。7.4派生

6、类的初始化和析构派生类构造函数定义派生类名::派生类名(参数总表):基类1(参数表),…基类m(参数表),对象成员1(参数表),…对象成员n(参数表){…}说明1.派生类的对象在初始化时,先调用虚基类的构造函数;再按照基类在继承时声明的顺序,依次调用基类的构造函数;然后按照对象成员在派生类中定义的顺序,依次调用对象成员的构造函数;最后调用派生类的构造函数。2.析构函数的调用顺序与构造函数正好相反。3.如果基类定义了没有默认形参值的构造函数,则必须定义派生类的构造函数。classA{protected:inta;…};classB:publicA{protected:i

7、ntb;…};classC:publicB{private:intc;…};ACBA::A(intx){a=x;}B::B(intx,inty):A(x){b=y;}C::C(intx,inty,intz):B(x,y){c=z;}7.5虚基类C++语言允许使用多重继承,使得程序员在设计派生类时,能够从各个基类得到更多的属性和方法。多重继承一定要在全盘接收的同时,注意消化和吸收,留其精华,弃其糟粕。多重继承案例一个三口之家,大家都知道其父亲会开车,母亲会唱歌。但是父亲还会修电脑,只有家里人知道。小孩既会开车又会唱歌甚至也会修电脑。母亲瞒着所有人在外面

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

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

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