欢迎来到天天文库
浏览记录
ID:52093508
大小:494.50 KB
页数:70页
时间:2020-03-31
《《派生类与继承》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章派生类与继承4.1继承与派生类4.1.1为什么要使用继承重用:通过继承机制,利用已有的类来定义新类,新的类不仅可以有新的成员,还拥有从已有的类继承来的成员。已有的类称为基类或父类,新的类称为派生类或子类。如果派生类从一个基类派生的,称这种继承为单继承;如果派生类从多个基类派生的,称这种继承为多继承。4.1继承与派生类单继承4.1继承与派生类多继承4.1继承与派生类4.1.2派生类的声明如果不采用派生类方法classperson{protected:charname[10];intage;charsex;public:voidprint();}
2、;classemployee{protected:charname[10];intage;charsex;chardepartment[20];floatsalary;public:print();};重复书写!!4.1继承与派生类改写//定义一个基类classperson{protected:charname[10];intage;charsex;public://……};//定义一个派生类classemployee:publicperson{protected:chardepartment[20];floatsalary;public://……
3、};4.1继承与派生类声明一个派生类的一般格式为:class派生类名:继承方式基类名{派生类新定义成员};其中,继承方式有3种:public(公有派生)、private(私有派生,缺省情况下也如此)、protected(保护派生)。由类person继承出类employee可以采用下面的三种格式之一:(1)公有继承classemployee:publicperson{//…};(2)私有继承classemployee:privateperson{//…};(3)保护继承classemployee:protectedperson{//…};4.1继承与
4、派生类派生类的变异功能从已有类派生出新类时,可以在派生类内完成以下几种功能:(1)可以增加新的数据成员;(2)可以增加新的成员函数;(3)可以重新定义基类中已有的成员函数;(4)可以改变现有成员的属性。4.1继承与派生类4.1.3基类成员在派生类中的访问属性在基类中的访问属性继承方式在派生类中的访问属性privatepublic不可直接访问privateprivate不可直接访问privateprotected不可直接访问publicpublicpublicpublicprivateprivatepublicprotectedprotectedpr
5、otectedpublicprotectedprotectedprivateprivateprotectedprotectedprotected4.1继承与派生类不可见可见可见4.1.4派生类对基类成员的访问规则派生类对基类成员的访问形式主要有以下两种:(1)内部访问:由派生类中新增成员对基类继承来的成员的访问。(2)对象访问:在派生类外部,通过派生类的对象对从基类继承来的成员的访问。4.1继承与派生类私有继承的访问规则基类的public成员和protected成员被继承后作为派生类的private成员,派生类的其他成员可以直接访问它们,但是在类外
6、部通过派生类的对象无法访问。基类的private成员在私有派生类中是不可直接访问的,所以无论是派生类成员还是通过派生类的对象,都无法直接访问从基类继承来的private成员,但是可以通过基类提供的public成员函数间接访问。4.1继承与派生类基类成员private成员public成员protected成员内部访问对象访问不可访问不可访问可访问不可访问可访问不可访问classfath{public:inta,b;intgetx(){returnX;}intgety(){returnY;}protected:intc,d;private:intX,Y
7、;};说明:classson:privatefath{intW,H;pubulic:voidlarge();}};等价于classson//{public://voidlarge();}protected:private://intW,H;inta,b;intgetx(){returnX;}intgety(){returnY;}intc,d;fatherprivate:intX,Y;};son:son1;son1可以访问large()son1.large可以访问除了X、Y以外的任何成员4.1继承与派生类例4.1一个私有继承的例子#include"i
8、ostream.h"classx{inta;public:x(){a=12;}intget(){returna;}void
此文档下载收益归作者所有