<分区>
Possible Duplicate:
Prefer composition over inheritance?
我想知道,为什么(或在哪些情况下)人们应该考虑继承而不是组合,因为它有很多缺点:
- 如果我们在调用父类(super class)方法的子类中实现/覆盖一个方法,则不能保证我们父类(super class)的另一个版本(可能是某个库)不会破坏我们的代码
- 如果父类(super class)中出现一个新方法,其签名与子类方法具有相同的签名,但返回类型不同,我们的类将无法编译。
因此,我无法想象,我们究竟如何能够依赖它。父类(super class)作者可能希望提高性能,而我们的客户端代码可能会崩溃。
所以我的问题是:
- 这些问题是如何解决的(例如在标准 Java 库中)?
- 何时使用继承和组合?