qq_32867783
Yzrc_Zc
采纳率0%
2016-06-05 03:32 阅读 2.5k

把派生类对象赋给基类对象有什么用?


Derive A; //派生类对象A
Base B; //基类对象B
A.fun(); //操作1
A=B;
A.fun(); //操作2
把B赋给A是可以的 但是操作1的结果和操作2的结果我测试后是一样的。。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-06-05 04:23

    试想,你编写了一个软件,允许第三方开发者为它编写插件。你应该怎么做?
    很明显,你应该定义基类或者接口。插件开发者实现这个基类或者接口,并且编写扩展软件功能的代码。
    你的主程序在加载了插件后,显然只能通过基类类型访问插件。因为在你开发主程序的时候,肯定插件还没有开发,否则怎么谈得上扩展呢?

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2016-06-05 04:27

    学习面向对象,一定要在实际的软件设计中理解。每一种编程语言的语法,都是有它实际的用途的。

    点赞 1 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-06-05 06:08
       首先,从语法上没有区别。但是大多数情况下,我们写代码时,关联的都是上层抽象类型,即我们只关心拥有某个对象的上层类型,而不关心它具体是哪种类型,那么不管外界给我们哪种它的底层子类,都不影响我这个类的功能。这就是依赖抽象的好处,其实这是设计模式的思想,主要作用就是让我能更容易复用和维护代码,等你写代码久了,接触的多了,就会逐渐体会这样依赖上层的优势了。
    
    点赞 评论 复制链接分享
  • lanlangaogao 阐述-岁月 2016-06-05 06:48

    上述代码有误区,面向对象和面向接口的实际效用就是体现在派生类上面。

    派生类没有重新实现过基类的函数fun,那就是完完全全的继承,因此上面的操作效果必定是一样的。如果在Base的fun里面打印出Base,在Derive的fun打印出Derive,效果就会不一样。这也才是基类与派生类的重要特征与作用。

    点赞 评论 复制链接分享

相关推荐