黑马程序员技术交流社区
标题:
关于继承和组合,我努力获取到了一种解释,大家有何见...
[打印本页]
作者:
HM李超
时间:
2013-3-9 23:54
标题:
关于继承和组合,我努力获取到了一种解释,大家有何见...
这是我今天上午碰到的问题,发在论坛上没什么人给我很好解释,链接地址是
http://bbs.itheima.com/forum.php?mod=viewthread&tid=40391&extra=page%3D1%26filter%3Dtypeid%26typeid%3D128%26typeid%3D128
我查了一些资料,按照我的理解说出一种解释:
问题是:使用组合来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统的开销会更大?
我的解释:系统开销不会更大。想想继承的知识,当创建一个子类对象时,系统会隐式地为子类创建对应的父类对象,这个父类对象可以在子类实例方法
里通过super引用来访问。因此,当采用继承关系实现复用时,系统创建Bird类和Dog类对象时,系统会隐式地为创建与之对应的Animal类对象。采用组合关系来
实现复用时,是程序员手动来创建被嵌入类(Animal)的对象,其系统开销不会有本质的差别!
开发中考虑使用继承还是使用组合时,先考虑类与类之间的关系,继承表达的是一种“是(is-a)”关系,而组合表达的是一种“有(has-a)”关系。
另:各位亲~~,你有什么其它的见解吗?
作者:
李辉
时间:
2013-3-10 05:48
首先,我同意你的观点:组合不会比继承开销更大。我觉得你上面的分析也很有道理,不过这些都是我们的猜想,要想真正讲清楚其中的原理应该不是件容易的事,可能要牵扯到java底层的东西还有操作系统。因此我的立场是:我们现阶段可以先不考虑哪种代码复用机制的系统开销更大。
开发时,要组织好类与类之间的关系并不是件容易的事,有时候各种类的关系错综复杂,不是(is-a)、(has-a)就能解释清楚的,编程技术需要在不断的实践中才能提高,现阶段我们还是好好打基础吧。
最后,祝所有的黑马们前程似锦!{:soso_e130:}
作者:
scott0610
时间:
2013-3-10 08:53
同意你的观点。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2