偏重于继承而不是继承
是非常流行的短语。我读了几篇文章,最后每篇文章都说
当类之间存在纯IS-A关系时,请使用继承。
本文中的一个示例:
在 Apple 和 Fruit 之间存在明显的IS-A关系,即Apple IS-A Fruit,但作者也将其显示为Apple HAS-A Fruit(组成),以显示通过继承实现时的陷阱。
我在这里变得有些困惑,声明的含义是什么
使用组合而不是继承是否意味着 即使* 存在纯IS-A关系,也总是 尝试 应用组合, 并且 仅在没有意义的情况下才 保留继承? *
当您使用继承重用超类中的代码,而不是重写方法并定义另一种多态行为时,通常表明您应该使用组合而不是继承。
该java.util.Properties班是一个坏的使用继承的一个很好的例子。它没有 使用 哈希表来存储其属性,而是 扩展了 哈希表,以便重用其方法并避免使用委托重新实现其中的某些方法。
java.util.Properties