《继承与派生》PPT课件.ppt
《《继承与派生》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《继承与派生》PPT课件.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章继承和派生1本章内容本章内容p5.1 继承和派生的概念p5.2 派生类的声明方法p5.3 派生类的构成p5.4 派生类成员的访问属性p5.5 派生类的构造函数和析构函数p5.6 多重继承p5.7 基类和派生类的转换p5.8 继承与组合2目标目标l理解派生和继承的相关概念;l掌握派生类的声明方式l掌握派生类的构成和成员的访问属性;l掌握派生类构造函数和析构函数的使用方法;l掌握多重继承的方法;l理解基类和派生类的转换方法;l理解继承与组合的含义。35.1 继承与派生的概念继承与派生的概念继承:继承是类之间定义的一种重要关系。人人学生学生老师老师大学生大学生研究生研究生硕士生硕士生博士生
2、博士生专科生专科生本科生本科生在职研究生在职研究生45.1 继承与派生的概念继承与派生的概念B类继承A类,或称从类A派生出B类,则A类称为基类(父类),类B称为派生类(子类)。人人学生学生老师老师大学生大学生研究生研究生硕士生硕士生博士生博士生专科生专科生本科生本科生在职研究生在职研究生55.1 继承与派生的概念继承与派生的概念单继承:派生类从一个基类派生的继承关系。多继承:派生类从多个基类派生的继承关系。人人学生学生老师老师大学生大学生研究生研究生硕士生硕士生博士生博士生专科生专科生本科生本科生在职研究生在职研究生65.1 继承与派生的概念继承与派生的概念l例:l1、定义一个学生类Stude
3、nt,包括学生和姓名,以及显示信息的函数。l2、定义一个大学生类CollegeStudent,包括学生、姓名和专业,以及显示信息的函数。75.1 继承与派生的概念继承与派生的概念class Student public:void display()coutnum;coutname;private:int num;string name;class CollegeStudent public:void display()coutnum;coutname;coutspeciality;private:int num;string name;string speciality;能否在定义能否在定义C
4、ollegeStudent时利用时利用Student,而不用重新而不用重新定义已有的成员?定义已有的成员?85.2 派生类的声明方式派生类的声明方式l声明派生类的一般形式为:class 派生类名:继承方式 基类名 派生类新增成员;l继承方式:public、private和protected,默认为private。95.2 派生类的声明方式派生类的声明方式class CollegeStudent:public Student public:void display1()coutnumname;void display()coutnumname;private:int num;string nam
5、e;class CollegeStudent:public Student public:void display()coutspeciality;private:string speciality;135.4 派生类成员的访问属性派生类成员的访问属性(一)公有继承public 成员protected 成员private 成员public 成员protected 成员private 成员基类基类派生类派生类不可访问14class Student public:void display()coutnumname;private:int num;string name;class CollegeS
6、tudent:public Student public:void display1()coutnumname speciality;private:string speciality;num和和name在派在派生类中不可访问。生类中不可访问。15class Student;class CollegeStudent:public Student public:void display1()coutspeciality;private:string speciality;void main()CollegeStudent s;s.display();s.display1();return 0;1
7、65.4 派生类成员的访问属性派生类成员的访问属性(二)私有继承public 成员protected 成员private 成员public 成员protected 成员private 成员基类基类派生类派生类不可访问private 成员private 成员17class Student public:void display()coutnumname;private:int num;string name;class CollegeStudent:private Student public:void display1()coutspeciality;private:string specia
8、lity;void main()CollegeStudent s;s.display();s.display1();s.speciality=“Computer”;return 0;18class Student public:void display()coutnumname;private:int num;string name;class CollegeStudent:private Student public:void display1()display();coutnumname;void display()coutnumspeciality;void display1()disp
9、lay();coutspeciality;private:string speciality;int main()CollegeStudent s;s.get_value1();s.display1();return 0;205.4 派生类成员的访问属性派生类成员的访问属性(三)保护继承public 成员protected 成员private 成员public 成员protected 成员private 成员基类基类派生类派生类不可访问protected 成员protected 成员215.4 派生类成员的访问属性派生类成员的访问属性(三)保护继承l由protected声明的成员称为受保护成员
10、,简称保护成员。l在同一类中保护成员和私有成员一样,只能被类内部的成员函数访问,而不能被类外访问。l保护成员可以被派生类的成员函数访问。22class Student private:int num;protected:string name;class CollegeStudent:protected Student public:void display()coutnum;coutnumname;void getvalue()cinnum;/void display()coutnumendlnameendl;void display()coutnumnamespeciality;void
11、display1()display();coutspecialityendlnameendl;private:string speciality;int main()CollegeStudent s;s.getvalue1();s.name=“dfsd343”;/error 类外无权访问类外无权访问/s.display();s.display1();return 0;24总结总结l类的成员的访问属性lPublic:可以在类内通过成员函数来访问,也可以在类外通过对象来访问。lPrivate:只能在类内通过成员函数来访问lProtected:只能在类内通过成员函数来访问25总结总结l派生后成员访问
12、属性在派生类中的变化:l原来在基类中的访问属性与上继承时的继承方式,即为基类成员在派生类中新的访问属性。Class 基类基类 public:成员:成员j1 protected:成员:成员j2 private:成员:成员j3;Class 派生类:派生类:基类基类 public:成员:成员p1 protected:成员:成员p2 private:成员:成员p3;public,j1,j226总结总结l派生后成员访问属性在派生类中的变化:l原来在基类中的访问属性与上继承时的继承方式,即为基类成员在派生类中新的访问属性。Class 基类基类 public:成员:成员j1 protected:成员:成员j
13、2 private:成员:成员j3;Class 派生类:派生类:基类基类 public:成员:成员p1 protected:成员:成员p2 private:成员:成员p3;Protected,j2,j127总结总结l派生后成员访问属性在派生类中的变化:l原来在基类中的访问属性与上继承时的继承方式,即为基类成员在派生类中新的访问属性。Class 基类基类 public:成员:成员j1 protected:成员:成员j2 private:成员:成员j3;Class 派生类:派生类:基类基类 public:成员:成员p1 protected:成员:成员p2 private:成员:成员p3;priva
14、te,j2,j1P162 表表28练习:分析多级派生时访问属性练习:分析多级派生时访问属性class A /基类public:int i;protected:void f2();int j;private:int k;class B:public A /public方式public:void f3();protected:void f4();private:int m;class C:protected B /protected方式public:void f5();private:int n;常用继承方式常用继承方式public295.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(
15、一)简单派生类的构造函数l简单派生类只有一个基类,数据成员中不包括基类的对象。l简单派生类构造函数的定义形式为:派生类构造函数(总参数列表):基类构造基类构造函数函数(参数列表参数列表)派生类中新增新增数据成员初始化;30class Stu public:Stu(int n,string na)num=n;name=na;protected:int num;string name;class ColStu:public Stu public:ColStu(int n,string na,string s):Stu(n,na)speciality=s;void display()coutnumn
16、amespeciality;private:string speciality;315.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(一)简单派生类的构造函数l构造函数的执行顺序:1.基类的构造函数。2.派生类的构造函数。l析构函数的执行顺序:1.派生类的析构函数。2.基类的析构函数。32简单派生类的构造函数简单派生类的构造函数派生类构造函数(总参数列表):基类构造函数(参数列表)派生类中新增数据成员初始化;l构造函数的执行顺序:1.基类的构造函数。2.派生类的构造函数。l析构函数的执行顺序:1.派生类的析构函数。2.基类的析构函数。335.5 派生类的构造函数和析构函数派生类的构
17、造函数和析构函数(二)有子对象子对象的派生类的构造函数l有子对象的派生类是指类的成员包括类类的成员包括类的对象。的对象。class Stu protected:int num;string name;class ColStu:public Stu public:void display();private:string speciality;Stu s;345.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(二)有子对象的派生类的构造函数l有子对象的派生类构造函数的一般形式为:派生类构造函数(总参数列表):基类构造基类构造函数(参数列表)函数(参数列表),子对象名(参数列表)子对象名
18、(参数列表)派生类中新增数据成员初始化;355.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(二)有子对象的派生类的构造函数l构造函数的执行顺序:1.基类的构造函数。2.子对象的构造函数。子对象的构造函数。3.派生类的构造函数。365.5 派生类的构造函数和析构函数派生类的构造函数和析构函数class B public:B(int bb)b=bb;private:int b;class C:public B public:C(int cc)c=cc;private:B memB;int c;找问题找问题 Cint b;/基类数据成员基类数据成员 int c;/新增数据成员新增数据成
19、员 B menB;/内嵌内嵌子对象子对象 如何初如何初始化?始化?37class B private:int b;public:B(int bb)b=bb;coutB:bendl;class C:public B public:C(int aa,int bb,int cc):B(aa),memB(bb)c=cc;coutC:cendl;private:B memB;int c;int main()C c(1,2,3);385.5 派生类的构造函数和析构函数派生类的构造函数和析构函数(三)多层派生时的构造函数l一个类不仅可以派生出一个派生类,派生类还可以继续派生,形成派生的层次结构。l多层继承时
20、的访问属性l多层派生时的构造函数不用列出每一层派生类的构造函数,只须只须写出其上一层派生类(即直接基类)的构造函数即可。39class Apublic:A(int aa)a=aa;A()()cout“”;private:int a;class B:public A public:B(int aa,int bb):A(aa)b=bb;private:int b;class C:public B public:C(int aa,int bb,int cc):B(aa,bb)c=cc;private:int c;40class Apublic:A(int aa)a=aa;void display()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 继承与派生 继承 派生 PPT 课件
限制150内