《第章继承和派生ppt课件》由会员分享,可在线阅读,更多相关《第章继承和派生ppt课件(18页珍藏版)》请在金锄头文库上搜索。
1、第第11章章 继承和派生继承和派生11.1 继承继承 一个类继承另一个类的过程成为派生一个类,派生出来的类称为派生类或子类。而被继承的类称为基类或父类,类的派生过程可以无限进行下去。11.1.1 单一继承单一继承 基类只有一个。 格式:class private public private : ; public : ; protected : ; 谴丽取哑师诗坎雹怕沥钉亢空停红贼掇夜授漓擦丑驾敞瓢滞航窃循磨豁雕第章继承和派生ppt课件第章继承和派生ppt课件说明: 1 继承可以部分继承,也可以在派生类中增加新的成员。 2派生分两类:私有和公有。11.1.2公有派生公有派生 公有派生时,访问基
2、类成员的权限在派生类中保持不变。即从类外可以访问从基类中派生下来的公有成员。例11-1:定义一个B类,从B类公有派生D类,并在D类中在增加一个私有数据成员Z和三个公有函数。佃宙奸仅哲组窒昼螺漏咽锐怖劣衬母傅驮寺戊靴跑奸强惰栖茎般旦数届姓第章继承和派生ppt课件第章继承和派生ppt课件程序:class B int x,y; public : void Setx(int a) x=a; void Sety(int b) y=b; int Getx()return x; int Gety()return y; ;村孺吻铂愚红育偶瞳究恤影福抠岁拢庚咆娥畦趟毋洗邪颇苟料蔚咽沛疤联第章继承和派生ppt课件
3、第章继承和派生ppt课件class D: public B int z; public: void Setz(int c) z=c; int Getz() return z; int Sum() return(Getx()+Gety()+Getz(); ; #include iostream.h void main() D d; d.Setx(1); /由于是公有派生,类外可访问贩趋蛮歹炮闪当傀付本欧清附五碱投稗脑婶疼豪祟仪尺惨年连批绅水放清第章继承和派生ppt课件第章继承和派生ppt课件直接访问 d.Sety(2); /继承后可以用d调用b类中的成员 d.Setz(3); coutx=d.G
4、etx()endl; couty=d.Gety()endl; coutz=d.Getz()endl; coutsum=d.Sum()endl; 说明:1. 派生类D的定义与主函数放在一个程序。2. 赋值与使用成员均在类内部进行。3. 对类中的成员的访问均通过函数成员进行。4. 派生出来的公有成员仍通过派生类的对象名访问。5. 在派生类中不能访问基类的私有成员。移轿曙究娜驳崎翼俯赎见絮粗躁分榴旺滞迟暗恫骸怖框罪冤天栗巧咯肇爹第章继承和派生ppt课件第章继承和派生ppt课件11.1.3 私有派生私有派生 基类成员在派生类中进行封装说明,在派生类外部(如函数)均不可见,而使用的是封装后的函数名(成员
5、名)。例11-2:从B类私有派生D类,然后进行输入和输出。class B int x,y; public : void Setx(int a) x=a; void Sety(int b)y=b; int Getx()return x; int Gety()return y; ;撞沦衅哇乘全遂验筏暇柿爹纽愚个恢怖榜谊沧都坠方戈琴贼享惠惨茬抹辣第章继承和派生ppt课件第章继承和派生ppt课件 #include iostream.h class D: private B /私有派生 int z; public : void Setz(int c) z=c; void Setbase(int a, i
6、nt b) Setx(a); Sety(b); int Getbx() return Getx(); /私有派生时,基类中的公有成员不能直接被访问(Getx()() int Getby() return Gety(); int Getz() return z; int Sum() return(z+Getx()+Gety(); ;顶擦淆云状堵掘味血槽捌戏泵侠探钵禹喘跪字搜灾束徊巷匀瓣剁喉既分肃第章继承和派生ppt课件第章继承和派生ppt课件void main() D d; d.Setbase(1,2); /私有派生时,基类中的公有成员不能直接访问 d.Setz(3); coutx=d.Getb
7、x()endl; couty=d.Getby()endl; coutz=d.Getz()endl; coutsum=d.Sum()endl; ;订掠污作刺韵么谦弛企枯搏擅沂谱垃讯勒妈怜银颊亦骇覆街办恍甭优卧酪第章继承和派生ppt课件第章继承和派生ppt课件11.1.4 保护成员保护成员 对于派生类,它是公有的;对于外部程序,它是私对于派生类,它是公有的;对于外部程序,它是私有的有的,即在派生过程中,保护成员不用封装。例11-3class B protected : int x,y; public : void Setx(int a) x=a; void Sety(int b)y=b; int
8、Getx()return x; int Gety()return y; ; 彪屎希煽菲疤叫果措改桂搐征奴窑烤烹魔褒怀泞口晤芬带畸剑徊塑津靡庐第章继承和派生ppt课件第章继承和派生ppt课件 #include iostream.h class D: private B int z; public : void Setz(int c) z=c; void Setbase(int a, int b) x=a; /对于派生类对于派生类,仍是公有仍是公有 y=b; int Getbx() return Getx(); int Getby() return Gety(); int Getz() retur
9、n z; int Sum() return(z+x+y); ;颁沼装宅蘑讯滦含汀傍紊淄目颗嗜刷聘圈虞砒桩戮伐筒敬迪囊孔蜕斑险漏第章继承和派生ppt课件第章继承和派生ppt课件void main() D d; d.Setbase(1,2); /对于外部程序,它是私有的, 成员不能直接访问 d.Setz(3); coutx=d.Getbx()endl; couty=d.Getby()endl; coutz=d.Getz()endl; coutsum=d.Sum()endl; 碱蚀映釜篓召粥继浅八淮茫遥教闰瞪嗣琢恳槐祝笔情圈凑迟泞蝎捷襟溢觅第章继承和派生ppt课件第章继承和派生ppt课件11.1.2
10、 多重继承多重继承利用多个基类派生的类。格式: class private , private , public , public private : ; public : ; protected : ; 昭再塌厂责鹿伐俩篮睛弦余企卞非欢派猫摇堪隆酸庞栈父沦廊腥雀膘月酉第章继承和派生ppt课件第章继承和派生ppt课件例: 11-4 class A protected : /保护成员 int w; public : void Setw(int a) w=a; int Getw()return w; ;欧替坡骨映顷汛矗真涅肘熏颧纶种宫闯稻谐婉哎檀眩侨储也漾篷蕾次咱驴第章继承和派生ppt课件第章继承
11、和派生ppt课件 class B protected : int x,y; public : void Setx(int a) x=a; void Sety(int b)y=b; int Getx()return x; int Gety()return y; ; 滞瘦岔告斑挣棕回盲鸣甩槐苫缘哺帜绕郝窥窘协侗拜译家最敌弱吠祖札疏第章继承和派生ppt课件第章继承和派生ppt课件class D: public A,B int z; public : void Setz(int c) z=c; void Setbase(int a, int b,int c) x=a; /x,y,w仍是公有 y=b;
12、w=c; 淘钾均赣瞬抵营丁阔栽龚供瘟鄂肿款虑绿交烂继氟喀癌箭倦铂嫩即孝峡仟第章继承和派生ppt课件第章继承和派生ppt课件 int Getbx() return x; int Getby() return y; int Getbw() return w; int Getz() return z; int Sum() return(z+x+y+w); ;辖惩赦虱苏闺咏啼涧屈纲瘟羽懂缕渠莹定衷论椒葱渝獭锚算挖硬喷请叛始第章继承和派生ppt课件第章继承和派生ppt课件#include iostream.hvoid main() D d; d.Setbase(1,2,3); d.Setz(4); coutx=d.Getbx()endl; couty=d.Getby()endl; coutz=d.Getbw()endl; coutz=d.Getz()endl; coutsum=d.Sum()endl; 址皂弟侮塞牲霉炉窗擅腆汉伏糯粥愁琼泡婿荫锦酬昨撕簧事壹签踪缺吃样第章继承和派生ppt课件第章继承和派生ppt课件输出结果是:程序说明:1. 从类 A, B中派生出了类D2. 仅继承私有成员(数据成员)3. 其中 setw() 不该封装,直接使用即可.翼泪晚酱茧绊贤换汉砸版只故什会戊舶园摹盼乘波洪佳嚼宇山宅椰禄懂折第章继承和派生ppt课件第章继承和派生ppt课件