ioz*_*zee 2 java inheritance composition
可能重复:
首选组合而不是继承?
我想知道,为什么(或者在哪种情况下)应该考虑继承而不是组合,当它有这么多的缺点时:
因此,我无法想象,地球上我们如何依赖它.超类作者可能希望提高性能,我们的客户端代码可能会崩溃.
所以我的问题是:
您的第一个异议也适用于组合:如果您调用的方法的实现发生更改,则无法保证您的代码不会中断.
第二个异议实际上是一件好事,因为您会立即注意到新版API存在问题.
这个问题与继承/组合没有太大关系.如果类的公共合同在不同版本之间发生变化,则必须对代码进行更改以适应这些更改.通过避免向后不兼容的更改来解决该问题.提供新的API可以是解决方案(例如,参见io,然后是nio,然后是nio2).否则,发行说明和迁移文档可帮助从一个版本的API转换到另一个版本.
当您的类与另一个类之间存在is-a关系时,将使用继承.当您的类与另一个类之间存在has-a关系时,将使用组合.
| 归档时间: |
|
| 查看次数: |
3567 次 |
| 最近记录: |