欢迎来到天天文库
浏览记录
ID:28201103
大小:81.50 KB
页数:18页
时间:2018-12-09
《《面向对象程序设计》辅导十一.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《面向对象程序设计》辅导十一第十四章继承学习要点:继承是面向对象程序设计中非常重要的一个机制。C++中,将在一个类的基础上构造一个新类称为继承。如果类B在类A的基础上构造,那么类A称为基类或父类,类B称为派生类或子类。派生类可以从基类继承所有的特性,而且可以根据自己需要增加新的特性或改造基类的特性,因此使用继承可以方便地复用别人写的代码。学习要求:理解继承的含义和使用条件,继承对于面向对象程序设计的影响。能够在程序设计中适时选择利用继承减少工作量,提高程序设计效率。理解派生类构造过程中的类成员的访问控制,保护成员在类继承中的作用。能够准确合理地确定类成员的访问控制特征。能够根据给定要求构造类
2、的继承层次,并完成一定的程序逻辑。学习方法引导:1、理解继承的含义、派生类的定义和使用、派生类的构造等内容。2、结合具体问题,能够根据给定要求构造类的继承层次,并完成一定的程序逻辑。学习内容:一、单继承的概念1.继承:自类A抽象出类B的过程,称为继承。基类:类A称为基类,又称父类或被继承类。派生类:类B称为派生类,又称子类或继承类。例:继承的概念2.父类和子类的关系子类能够继承父类的全部特征,包括所有的数据成员和函数成员。并且子类还能够定义父类所没有的、属于自己的数据成员和函数成员。<一>公有、保护和私有继承1.派生类的定义格式class派生类名:继承方式基类名{成员列表}其中:继承方式有p
3、ublic、private和protected三种。2.保护成员的作用(1)public(公共的):表该成员可为任意函数访问。(2)private(私有的):表该成员只能为该类的成员函数访问。(3)protected(保护的):表该成员只能为该类及其派生类的成员函数访问。派生类的成员函数可以直接访问基类的公有和保护成员。派生类的成员函数不能访问基类的私有成员。如图14.1示。3.继承方式:public、protected和private三种。4.派生类中自基类继承来的成员其访问属性受该成员在基类中的访问属性和继承方式的影响,具体见下表。若规定级别:public4、te则上表意味着:若成员在基类中的访问属性小于继承方式的,则其在子类中的访问属性上升为继承方式。例:继承方式为protected时,基类中的public成员在子类中为protected成员。基类中的protected成员在子类中仍为protected成员。基类中的private成员在子类中仍为private成员。例:classBase{public:intm1;protected:intm2;private:intm3;};classPrivateclass:privateBase//私有继承{public:voidtest(){m1=1;//ok,将m1据为privatem2=2;//ok5、,将m2据为privatem3=3;//不可访问}};classDerivedFromPri:publicPrivateclass{public:voidtest(){m1=1;//不可访问基类中的私有成员m2=2;//不可访问m3=3;//不可访问}};classProtectedclass:protectedBase//保护继承{public:voidtest(){m1=1;//ok,将m1据为protectedm2=2;//ok,将m2据为protectedm3=3;//不可访问}};classDerivedFromPro:publicProtectedclass{public:voi6、dtest(){m1=1;//m1仍为protectedm2=2;//m2仍为protectedm3=3;//不可访问}};classPublicclass:publicBase//公共继承{public:voidtest(){m1=1;//ok,将m1据为publicm2=2;//ok,将m2据为protectedm3=3;//不可访问}};classDerivedFromPub:publicPublicclass{public:voidtest(){m1=1;//m1仍为publicm2=2;//m2仍为protectedm3=3;//不可访问}};voidmain(){Privatec7、lasspriobj;priobj.m1=1;//errorpriobj.m2=2;//errorpriobj.m3=3;//errorProtectedclassproobj;proobj.m1=1;//errorproobj.m2=2;//errorproobj.m3=3;//errorPublicclasspubobj;pubobj.m1=1;//正确pubobj.m2=2;//errorpubobj.
4、te则上表意味着:若成员在基类中的访问属性小于继承方式的,则其在子类中的访问属性上升为继承方式。例:继承方式为protected时,基类中的public成员在子类中为protected成员。基类中的protected成员在子类中仍为protected成员。基类中的private成员在子类中仍为private成员。例:classBase{public:intm1;protected:intm2;private:intm3;};classPrivateclass:privateBase//私有继承{public:voidtest(){m1=1;//ok,将m1据为privatem2=2;//ok
5、,将m2据为privatem3=3;//不可访问}};classDerivedFromPri:publicPrivateclass{public:voidtest(){m1=1;//不可访问基类中的私有成员m2=2;//不可访问m3=3;//不可访问}};classProtectedclass:protectedBase//保护继承{public:voidtest(){m1=1;//ok,将m1据为protectedm2=2;//ok,将m2据为protectedm3=3;//不可访问}};classDerivedFromPro:publicProtectedclass{public:voi
6、dtest(){m1=1;//m1仍为protectedm2=2;//m2仍为protectedm3=3;//不可访问}};classPublicclass:publicBase//公共继承{public:voidtest(){m1=1;//ok,将m1据为publicm2=2;//ok,将m2据为protectedm3=3;//不可访问}};classDerivedFromPub:publicPublicclass{public:voidtest(){m1=1;//m1仍为publicm2=2;//m2仍为protectedm3=3;//不可访问}};voidmain(){Privatec
7、lasspriobj;priobj.m1=1;//errorpriobj.m2=2;//errorpriobj.m3=3;//errorProtectedclassproobj;proobj.m1=1;//errorproobj.m2=2;//errorproobj.m3=3;//errorPublicclasspubobj;pubobj.m1=1;//正确pubobj.m2=2;//errorpubobj.
此文档下载收益归作者所有