第7章 继承性和派生类.doc

第7章 继承性和派生类.doc

ID:28814227

大小:535.50 KB

页数:34页

时间:2018-12-14

第7章 继承性和派生类.doc_第1页
第7章 继承性和派生类.doc_第2页
第7章 继承性和派生类.doc_第3页
第7章 继承性和派生类.doc_第4页
第7章 继承性和派生类.doc_第5页
资源描述:

《第7章 继承性和派生类.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、*第7章继承性和派生类本章内容:基类和派生类、单继承、多继承、虚基类。类面向对象系统三要素对象继承封装性基础面向对象系统三特征继承性关键多态性补充继承是面向对象程序设计中软件重用的关键技术。继承机制使用已经定义的类作为基础建立新的类定义,新的类是原有类的数据﹑操作和新类所增加的数据﹑操作的组合。新的类把原有类作为基类引用,而不需要修改原有类的定义。新定义的类作为派生类引用。这种可扩充﹑可重用技术大大降低了大型软件的开发难度和维护费用。7.1基类和派生类我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称

2、为派生类,又称为子类。在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。YXAZBC单继承多继承7.1.1派生类的定义格式单继承的定义格式:class派生类名:继承方式基类名{   派生类新定义成员};public表示公有继承继承方式private表示私有继承protected表示保护继承继承方式规定了如何访问从基类继承的成员。继承方式缺省,隐含私有继承。多继承的定义格式如下:class派生类名:继承方式1基类名1,继承方式2基类名2,…{  派

3、生类新定义成员};7.1.2派生类的三种继承方式1.公有继承(public)公有成员是类的接口,在类中和类外可见。特点:基类的公有和保护成员的访问属性在派生类中不变、而基类的私有成员不可访问。private成员protected成员public成员private成员protected成员public成员基类成员派生类新定义成员成员派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。2.私有继承(private)私有成员只能在类中可见,不能再类外或派生类中使用。特点:基类中的公有成员和保护成

4、员都以私有成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。private成员Protected成员private成员public成员private成员private成员protected成员public成员基类成员派生类新定义成员成员派生类的成员函数可以访问基类中的公有成员和保护成员。而无法再往下继承。3.保护继承(protected)保护成员在类中和它的派生类中可见。特点:基类的公有和保护成员都以保护成员的身份出现在派生类中,并且只能被它的派生类成员函数或友元函数访问,而基类的私有成员不可访问。private成员

5、Protected成员protected成员public成员protected成员private成员protected成员public成员基类成员派生类新定义成员成员派生类的成员函数可以访问基类中的公有成员和保护成员。三种不同的继承方式的基类和派生类特性。7.1.3基类与派生类的关系在这个层次结构中,由上到下,是一个具体化、特殊化的过程;由下到上,是一个抽象化的过程。最高层抽象程度最高,从上到下加入了自己的新特征,而最下层是最为具体的。ABC在派生过程中,派生出来的新类也同样可以作为基类再继续派生新的类。直接参与派生出某类的基

6、类称为直接基类。基类的基类称为间接基类,比如A类派生出B类,B类又派生出C类。则B类是C类的直接基类,A类是B类的直接基类。而A类可以称为C类的间接基类。7.2单继承1.派生类B中f2()能否访问基类A中:f1(),j1,i1?2.派生类B的对象b1能否访问基类A中:f1(),j1,i1?3.派生类C中f3()能否访问直接基类B中:f2(),j2,i2?能否访问间接基类A中:f1(),j1,i1?4.派生类C的对象c3能否访问直接基类B中:f2(),j2,i2?能否访问间接基类A中:f1(),j1,i1?7.2.1成员访问权限

7、的控制classC:publicB{public:voidf3();};classB:publicA{public:voidf2();protected:intj2;private:inti2;};#includeclassA{public:voidf1();protected:intj1;private:inti1;};例7.2#includeclassA{public:voidf(inti){cout<

8、sB:A{public:voidh(){cout<<”h”;}A::f;};voidmain(){Bd1;d1.f(6);d1.g();d1.h();}问题:1.d1.g();出现编译错。2.去掉d1.g();执行结果为:6h3.A::f;将基类中的公有成员说明成派生类的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。