微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

关于继承的疑惑

时间:2017-01-17 04:01  浏览:努力统计中...
在java程序设计思想里强调组合优先于组合,那么都是为了得到另一个类的功能为什么要有继承和组合之分(除了描述类与类之间的关系)。既然继承会增加类与类之间的耦合,为什么还
在java程序设计思想里强调组合优先于组合,那么都是为了得到另一个类的功能为什么要有继承和组合之分(除了描述类与类之间的关系)。既然继承会增加类与类之间的耦合,为什么还要在继承和组合之间做选择?

继承,是一个父子的关系,而组合,是一个使用关系!

不是所有人都会开车,所以不能再人中写开车方法(不要说就会不会开车再分一层,只为举例,分太多就太复杂了)。而且你和车手都会开车,但是车不一样。所以在开车方法里用车,不用车的子类。在实例化的时候,将具体的车传进去(2楼说的多态思想)。
A继承B,那么B有的特征,A一定要有

A组合C,那么C可以为A提供它的public方法,让A使用


所以继承的时候对A的要求就很严格了!~

继承和多态是分不开的,正因为有了继承机制,可以将类的实例化延迟到运行时,这是组合无法实现的


+1

看来是OO 没学好呀.

有时候,你可以学习朋友一些好的习惯。但是自己有些习惯却感觉跟自己的父亲一下,有可能就因为基因遗传。如有某些性格。



 继承能狗满足组合满足不了的关系



+1,很多时候,各有各的有点。

一个是家族企业,一个是合伙企业
面向对象的特点是封装,继承,多态
存在总是有理由的 
按照我的理解
继承是表示垂直关系的
组合是表示平行关系的
这俩个是互补的,如同平面有俩个坐标轴。
继承垂直往上是必然被要求去完成某事。
组合则是自由选择完成某事。
以上是个人理解,如有不恰当的地方也请各位大牛指教。
楼主想象以下,如果说既有继承又有组合形成的图像棋盘一样。
那么,抛开继承不用,只用组合,这个图该有多复杂。同理,没有组合也是一样。

。。。。但是跨层的东西就不能实现了(多态)。。。。

连修饰符都有4种。
各有各的用处。
如果楼主不理解可以试着抽象一下开车的例子。
你开AE86.车手开F1。
你,赛车手,不会开车的人继承自人(继承其实是代码重用思想的体现之一)再继承自哺乳动物(其实也是分层抽象思想,如同世界地图上不会标注你家乡有几个旅店,每一层写好自己的所关注的东西)。
车继承自交通工具。

如果没有继承,那么将所有的类放在一条线上考虑也行。但是跨层的东西就能实现了(多态)。因为你现在是一维的设计,不能实现二维的要求的。
如果没有继承,那么所有按照代码重用细想设计的话,所有的类都将是平行关系,这将多么麻烦。。
希望对你有帮助~







上面打错了,倒数第5行

继承与多态有着密不可分的关系,继承是子类继承父类,而多态是父类的引用可以指向子类的对象
    顶一下
    (3)
    100%
    踩一下
    (0)
    0%
    ------分隔线------