小编典典

在 Java 中禁止继承的充分理由?

all

在 Java 中禁止继承的充分理由是什么,例如使用最终类或使用单个私有无参数构造函数的类?使方法成为最终方法的充分理由是什么?


阅读 160

收藏
2022-03-04

共1个答案

小编典典

您最好的参考资料是 Joshua Bloch 的优秀著作“Effective Java”的第 19 条,名为“Design and document for inheritance or else implicit it”。(它是第二版的第 17 条和第一版的第 15 条。)你真的应该阅读它,但我会总结一下。

如果祖先不是被设计为继承的,那么继承类与其父类的交互可能会令人惊讶且不可预测。

因此,类应该有两种:

  1. 旨在扩展**的类,并且有足够的文档来描述它应该如何完成
  2. 课程标记为最终**

如果您正在编写纯粹的内部代码,这可能有点矫枉过正。然而,将五个字符添加到类文件所涉及的额外工作量非常小。如果您只是为内部消费而编写,那么未来的编码人员总是可以删除“final”——您可以将其视为“此类在设计时没有考虑到继承”的警告。

2022-03-04