这个问题在这里已经有一个答案:>
Why Java 6 overrides keySet(),entrySet() and values() interface in SortedMap1
我有一个接口A和B.一个(抽象的)方法叫做foo. B扩展了A.
我有一个接口A和B.一个(抽象的)方法叫做foo. B扩展了A.
即使使用@Override也可以覆盖接口B中的foo,但是有没有什么情况呢?没有什么可以重写,因为这两种方法必须是抽象的,没有任何身体.所以我想没有什么情况,这是有道理的,对吧?
那么为什么可以在界面中覆盖呢?
解决方法
一种情况是当您要更新Javadoc文档以反映子界面方法中更具体的合同,如
Collection#addAll(Collection)
和
List#addAll(Collection)
所示:
> Collection#addAll(Collection):
Adds all of the elements in the specified collection to this collection (optional operation)…
>列表#addAll(集合:
Appends all of the elements in the specified collection to the end of this list,in the order that they are returned by the specified collection’s iterator (optional operation)…
子接口还可以添加一个从Java 8开始的默认实现.