欢迎来到天天文库
浏览记录
ID:43531503
大小:321.50 KB
页数:18页
时间:2019-10-10
《第11章 继承和派生》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第11章继承和派生11.1继承一个类继承另一个类的过程成为派生一个类,派生出来的类称为派生类或子类。而被继承的类称为基类或父类,类的派生过程可以无限进行下去。11.1.1单一继承基类只有一个。格式:class<派生类的名字:>private<基类类名>public{private:<私有成员>;public:<公有成员>;protected:<被保护成员>;}说明:1继承可以部分继承,也可以在派生类中增加新的成员。2.派生分两类:私有和公有。11.1.2公有派生公有派生时,访问基类成员的权限在派生类中保持不变。即
2、从类外可以访问从基类中派生下来的公有成员。例11-1:定义一个B类,从B类公有派生D类,并在D类中在增加一个私有数据成员Z和三个公有函数。程序:classB{intx,y;public:voidSetx(inta){x=a;}voidSety(intb){y=b;}intGetx(){returnx;}intGety(){returny;}};classD:publicB{intz;public:voidSetz(intc){z=c;}intGetz(){returnz;}intSum(){return(Getx
3、()+Gety()+Getz());}};#include"iostream.h"voidmain(){Dd;d.Setx(1);//由于是公有派生,类外可访问直接访问d.Sety(2);//继承后可以用d调用b类中的成员d.Setz(3);cout<<"x="<4、均在类内部进行。对类中的成员的访问均通过函数成员进行。派生出来的公有成员仍通过派生类的对象名访问。在派生类中不能访问基类的私有成员。11.1.3私有派生基类成员在派生类中进行封装说明,在派生类外部(如函数)均不可见,而使用的是封装后的函数名(成员名)。例11-2:从B类私有派生D类,然后进行输入和输出。classB{intx,y;public:voidSetx(inta){x=a;}voidSety(intb){y=b;}intGetx(){returnx;}intGety(){returny;}};#inclu5、de"iostream.h"classD:privateB//私有派生{intz;public:voidSetz(intc){z=c;}voidSetbase(inta,intb){Setx(a);Sety(b);}intGetbx(){returnGetx();}//私有派生时,基类中的公有成员不能直接被访问(Getx())intGetby(){returnGety();}intGetz(){returnz;}intSum(){return(z+Getx()+Gety());}};voidmain(){Dd;d6、.Setbase(1,2);//私有派生时,基类中的公有成员不能直接访问d.Setz(3);cout<<"x="<7、a){x=a;}voidSety(intb){y=b;}intGetx(){returnx;}intGety(){returny;}};#include"iostream.h"classD:privateB{intz;public:voidSetz(intc){z=c;}voidSetbase(inta,intb){x=a;//对于派生类,仍是公有y=b;}intGetbx(){returnGetx();}intGetby(){returnGety();}intGetz(){returnz;}intSum(){r8、eturn(z+x+y);}};voidmain(){Dd;d.Setbase(1,2);//对于外部程序,它是私有的,成员不能直接访问d.Setz(3);cout<<"x="<
4、均在类内部进行。对类中的成员的访问均通过函数成员进行。派生出来的公有成员仍通过派生类的对象名访问。在派生类中不能访问基类的私有成员。11.1.3私有派生基类成员在派生类中进行封装说明,在派生类外部(如函数)均不可见,而使用的是封装后的函数名(成员名)。例11-2:从B类私有派生D类,然后进行输入和输出。classB{intx,y;public:voidSetx(inta){x=a;}voidSety(intb){y=b;}intGetx(){returnx;}intGety(){returny;}};#inclu
5、de"iostream.h"classD:privateB//私有派生{intz;public:voidSetz(intc){z=c;}voidSetbase(inta,intb){Setx(a);Sety(b);}intGetbx(){returnGetx();}//私有派生时,基类中的公有成员不能直接被访问(Getx())intGetby(){returnGety();}intGetz(){returnz;}intSum(){return(z+Getx()+Gety());}};voidmain(){Dd;d
6、.Setbase(1,2);//私有派生时,基类中的公有成员不能直接访问d.Setz(3);cout<<"x="<7、a){x=a;}voidSety(intb){y=b;}intGetx(){returnx;}intGety(){returny;}};#include"iostream.h"classD:privateB{intz;public:voidSetz(intc){z=c;}voidSetbase(inta,intb){x=a;//对于派生类,仍是公有y=b;}intGetbx(){returnGetx();}intGetby(){returnGety();}intGetz(){returnz;}intSum(){r8、eturn(z+x+y);}};voidmain(){Dd;d.Setbase(1,2);//对于外部程序,它是私有的,成员不能直接访问d.Setz(3);cout<<"x="<
7、a){x=a;}voidSety(intb){y=b;}intGetx(){returnx;}intGety(){returny;}};#include"iostream.h"classD:privateB{intz;public:voidSetz(intc){z=c;}voidSetbase(inta,intb){x=a;//对于派生类,仍是公有y=b;}intGetbx(){returnGetx();}intGetby(){returnGety();}intGetz(){returnz;}intSum(){r
8、eturn(z+x+y);}};voidmain(){Dd;d.Setbase(1,2);//对于外部程序,它是私有的,成员不能直接访问d.Setz(3);cout<<"x="<
此文档下载收益归作者所有