继承派生类课件.ppt

继承派生类课件.ppt

ID:57028350

大小:669.00 KB

页数:74页

时间:2020-07-26

继承派生类课件.ppt_第1页
继承派生类课件.ppt_第2页
继承派生类课件.ppt_第3页
继承派生类课件.ppt_第4页
继承派生类课件.ppt_第5页
资源描述:

《继承派生类课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章继承--派生类本章内容继承的基本概念单继承虚函数与动态绑定多继承类作为模块继承的概念在开发一个新软件时,把现有软件或软件的一部分拿过来用称为软件复用。目前,不加修改地直接复用已有软件比较困难。已有软件的功能与新软件所需要的功能总是有差别的。解决这个差别有下面的途径:修改已有软件的源代码,它的缺点是:需读懂源代码可靠性差、易出错源代码难以获得继承机制(Inheritance):在定义一个新的类时,先把一个或多个已有类的功能全部包含进来,然后再给出新功能的定义或对已有类的某些功能重新定义。不需要源代码基类与派生类在继承关

2、系中存在两个类:基类(或称父类)和派生类(或称子类)。派生类拥有基类的所有特征,并可以定义新的特征或对基类的一些特征进行重定义。基类派生类继承分为:单继承和多继承单继承:一个类最多有一个直接基类。多继承:一个类可以有多个直接基类。继承对程序设计的支持继承机制除了支持软件复用外,它还具有下面的作用:对事物进行分类。支持软件的增量开发。A1A2A3对概念进行组合。研究生教师在职研究生单继承在定义单继承时,派生类只能有一个直接基类,其定义格式如下:class<派生类名>:[<继承方式>]<基类名>{<成员说明表>};<派生类名>

3、为派生类的名字。<基类名>为直接基类的名字。<成员说明表>是在派生类中新定义的成员,其中包括对基类成员的重定义。<继承方式>指出派生类的实例(对象)用户以及派生类的派生类对该派生类从基类继承来的成员的访问控制classA//基类{intx,y;public:voidf();voidg();};classB:publicA//派生类{intz;//新成员public:voidh();//新成员};关于派生类的一些说明除了拥有新定义的成员外,派生类还拥有基类的所有成员(基类的构造函数和赋值操作符重载函数除外)。例如:Bb;bb

4、.x:b.y:b.z:b.f();//A类中的fb.g();//A类中的gb.h();//B类中的hclassA//基类{intx,y;public:voidf();voidg();};classB:publicA//派生类{intz;//新成员public:voidh();//新成员};定义派生类时一定要见到基类的定义。classA;//声明classB:publicA//Error{intz;public:voidh(){g();}//Error,编译程序不知道基类中是否有函数g以及函数g的原型。};......Bb;

5、//Error,编译无法确定b所需内存空间的大小。如果在派生类中没有显式说明,基类的友元不是派生类的友元;如果基类是另一个类的友元,而该类没有显式说明,则派生类也不是该类的友元。派生类不能直接访问基类的私有成员。例如:classA{intx,y;public:voidf();voidg(){...x...}};classB:publicA{intz;public:voidh(){...x...//Error,x为基类的私有成员。g();//OK,通过函数g访问基类的私有成员x。}};在派生类中对基类成员的访问派生类成员名的

6、作用域嵌套在基类作用域中。如果派生类中定义了与基类同名的成员,则基类的成员名在派生类的作用域内不直接可见(被隐藏,Hidden)。访问基类同名成员时要用基类名受限。例如:classB:publicA{intz;public:voidf();voidh(){f();//B类中的fA::f();//A类中的f}};Bb;b.f();//B类中的f。b.A::f();//A类中的fclassA//基类{intx,y;public:voidf();voidg();};即使派生类中定义了与基类同名但参数不同的成员函数,基类的同名函数

7、在派生类的作用域中也是不直接可见的:classB:publicA{intz;public:voidf(int);voidh(){f(1);//OKf();//ErrorA::f();//OK}};......Bb;b.f(1);//OKb.f();//Errorb.A::f();//OKclassA//基类{intx,y;public:voidf();voidg();};封装与继承的矛盾在派生类中定义新的成员时,往往需要用到基类的一些private成员。(矛盾)在继承机制中,一个类的成员有两种被外界使用的场合:通过类的对象

8、使用在派生类中使用在C++中,提供了另外一种类成员访问控制:protected,用它说明的成员不能被对象使用,但可以在派生类中使用。protected访问控制缓解了封装与继承的矛盾classA{protected:intx,y;public:voidf();};classB:publicA{......

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

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

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