一尘不染

偏爱继承而不是继承

java

偏重于继承而不是继承

是非常流行的短语。我读了几篇文章,最后每篇文章都说

当类之间存在纯IS-A关系时,请使用继承。

本文中的一个示例:

AppleFruit 之间存在明显的IS-A关系,即Apple IS-A Fruit,但作者也将其显示为Apple HAS-A
Fruit(组成),以显示通过继承实现时的陷阱。

我在这里变得有些困惑,声明的含义是什么

当类之间存在纯IS-A关系时,请使用继承。

使用组合而不是继承是否意味着 即使* 存在纯IS-A关系,也总是 尝试 应用组合, 并且 仅在没有意义的情况下才 保留继承? *



阅读 268

收藏
2020-09-08

共1个答案

一尘不染

当您使用继承重用超类中的代码,而不是重写方法并定义另一种多态行为时,通常表明您应该使用组合而不是继承。

java.util.Properties班是一个坏的使用继承的一个很好的例子。它没有 使用 哈希表来存储其属性,而是 扩展了
哈希表,以便重用其方法并避免使用委托重新实现其中的某些方法。

2020-09-08