欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第八章类的继承.ppt

    • 资源ID:5313414       资源大小:180.03KB        全文页数:21页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第八章类的继承.ppt

    第八章 类的继承,继承和组合 多重继承虚拟继承、虚基类,程序设计讲究代码的重用,这不应当仅仅依靠代码的拷贝来实现,而应使用更具可进化性的方法解决。在C+中,可以用类的方法来实现代码的重用。通过创建新类重用代码,而不是从头创建它们,这样就可以使用其他人已经创建并调试过的类。关键是使用类而不是更改已存在的代码。C+最重要的性能之一即代码重用。,8.1 代码重用,继承可以使已存在的类不需修改地适应新应用,理解继承是理解面向对象程序设计所有方面的关键。,通信工具类通信工具的属性和行为,派生类的构造,派生类的构造是从基类的初始化开始的。派生类调用基类的构造函数对基类对象进行初始化,派生类通过其构造函数的初始化表来实现这一点。若派生类未在其构造函数的初始化表中显示调用基类的构造函数,则系统将在构造派生类对象之前自动调用其基类的默认构造函数,构造基类对象部分,即一个无名基类对象。,8.2 组合,类以另一个类对象作数据成员,称为组合。继承和组合都发挥了重用,将以前设计好的类“重新拿来”,但两者在使用上不同。,class Xint i;public:X()i=0;void set(int k)i=k;int get()return i;,class Y int i;public:X xo;Y()i=0;void set(int k)i=k;int get()return i;,void main()Y yo;yo.set(7);yo.xo.set(7);,class Y:public X int i;public:Y()i=0;void set(int k)i=k;int get()return i;,void main()Y yo;yo.set(7);,私有的嵌入式对象,class Yint i;X xo;public:Y()i=0;void set(int k)i=k;xo.set(k);int get()return i*xo.get();,void main()Y yo;yo.set(7);,继承与组合,无论组合还是继承都能把子对象放在新类型中。两者都使用构造函数的初始化表去构造这些子对象。这两者之间到底有什么不同?该如何选择?,组合通常在希望新类内部有已存在类的性能时使用,而不希望已存在类作为它的接口。这就是说,嵌入一个计划用于实现新类性能的对象,而新类的用户看到的是新定义的接口而不是来自老类的接口。为此,在新类的内部嵌入已存在类的private对象。有时,需要允许类用户能够直接访问新类中组合的对象成员,这就要让对象成员是public属性的。,class Engine;class Wheel;class Window;class Door public:Window window;;,class Car public:Engine engine;Wheel wheel 4;Door left,right;;,class VehicleEngine engine;public:void run();float speedUp(float speed);,class Car:public Vehicle Wheel wheel 4;public:;,继承也就是取一个已存在的类,并制作它的一个专门的版本。通常,这意味着取一个一般目的的类并为了特殊的需要对它专门化。,8.3 多重继承,可以根据需要为一个派生类指定多个基类,这样的继承结构称为多重继承或多继承。现实世界中,有些类代表多个类的合成,实现这样的类需要使用多重继承。,/床类的定义,class Bed protected:int weight;public:Bed():weight(0)void Sleep()cout Sleeping.n;void SetWeight(int i)weight=i;,/沙发类的定义,class Sofa protected:int weight;public:Sofa():weight(0)void WatchTV()cout Watching TV.n;void SetWeight(int i)weight=i;,/沙发床类的定义,class SleeperSofa:public Bed,public Sofa public:SleeperSofa()void FolderOut()cout Fold out the sofa.n;,/主程序,void main()SleeperSofa ss;ss.WatchTV();ss.FolderOut();ss.Sleep();,Watching TV.Fold out the sofa.Sleeping.,继承的模糊性,ss.SetWeight(20);,?,ss.Bed:SetWeight(20);ss.Sofa:SetWeight(20);,名称冲突,class Furniture protected:int weight;public:Furniture()int GetWeight()return weight;void SetWeight(int i)weight=i;,class Bed:public Furniture public:Bed()void Sleep()coutSleeping.n;,class Sofa:public Furniture public:Sofa()void WatchTV()cout Watching TV.n;,床部分,沙发部分,SleeperSofa完整对象,虚拟继承,class Bed:virtual public Furniture public:Bed()void Sleep()coutSleeping.n;,class Sofa:virtual public Furniture public:Sofa()void WatchTV()cout Watching TV.n;,void main()SleeperSofa ss;ss.SetWeight(20);coutss.GetWeight()endl;,多继承的构造顺序,包含多继承的复杂继承结构中,构造函数按下列顺序被调用:任何虚拟基类的构造函数按照它们被继承的顺序构造任何非虚拟基类的构造函数按照它们被继承的顺序构造任何成员对象的构造函数按照它们声明的顺序构造类自己的构造函数,析构的顺序则恰好相反,

    注意事项

    本文(第八章类的继承.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开