请问组合和继承这两个概念有什么区别
解决方案 »
- 在这里向大家请教一个问题,怎么准备面试+笔试
- Matcher的返回结果怎么不对、明明是多个字母的。
- 求解答:JNA中函数指针的赋值问题
- 关于XML SAX解析语句的困惑,在线等。
- 向已存在的excel文件中增加数据,出现内存溢出
- 改变窗口尺寸后 如何让布局管理器更新窗口控件的布局
- 请教高手Myfaces中的visibleOnUserRole,enabledOnUserRole怎么用?
- Exception in thread "main" java.lang.NoclassDefFou
- =====给我等菜鸟们推荐一款特别适合新手使用的JAVA IDE=========
- 关于对象的销毁
- 怎么实现类似资源管理器那样的界面显示文件?
- java 怎么才能放问内网?
java中要慎重使用使用继承,多使用组合!
其实个人认为,继承在编码阶段是不会用上的。软件在分析阶段,无法抽象功能,无法具体的说出哪个哪个类干什么,定框架的时候,只能用接口和抽象类;然后在设计阶段,定出哪个类必须是实现哪个接口extends哪个abstract class,这是一种很有用的机制,分析的时候不用想太细,设计的时候分细了也不会破坏分析定下来的框架,而至于到实实在的一个一个类在写代码的时候,你要用到别的类的内容就组合进来就可以了,如果这个时候还去继承,整个系统就乱了,设计就被破坏了,有可能分析都完蛋。因为当时定的两个接口是独立的,现在它的实现互相继承,肯定完蛋。
借用一楼的比喻,你是你爸妈生的,你们都有亲属关系,这是血源决定的。有个女人你想和她做成为亲人,最直接的办法就是娶过来,成为你的老婆,而不是去认她做妈,然后从血型到基因都说和她是母子关系,显然这是不可能的。
生活中不可能破坏血源关系,程序里可以,但是后果可想而知,所以都是不提倡用继承。设计(生孩子)阶段和编码(孩子长大了)阶段,继承和组合就各有所重了。离开哪个都不合适。
eg:(车子“是一种”交通工具)
“has-a(有一个)”的关系便以组合来表达。