【发布时间】:2015-06-26 14:40:32
【问题描述】:
我正在阅读 J. Bloch 的 Effective Java,现在我正在阅读继承与组合部分。据我了解,他说继承并不总是好的。
子类脆弱的一个相关原因是它们的超类 可以在后续版本中获取新方法。假设一个程序 其安全性取决于所有元素插入到 一些集合满足一些谓词。这可以通过 来保证 继承集合并覆盖每个方法 添加一个元素以确保谓词之前得到满足 添加元素。在一种新方法能够 插入元素被添加到超类中 释放。
但为什么它不起作用?超类只是Collection 接口,如果我们添加一个新方法,我们只是一个编译时错误。这永远不会有害...
【问题讨论】:
-
向超类添加新方法不会导致这样的编译时错误。事实上,将
default方法添加到接口也不会产生编译时错误。 -
如果你说的是
java.util.Collection,那不是超类。那只是一个界面。 -
在超类或接口中添加抽象方法,如果重新编译子类,会出现编译时错误,但这可能不会发生。
标签: java inheritance