Java 理解子接口中的重写接口方法

Java 理解子接口中的重写接口方法,java,collections,Java,Collections,我遇到了Collection界面,如下所示: boolean add(E e); 然后我遇到了Set接口,它扩展了Collection,具有相同的上述签名 由于签名相同,我认为Set是Collection中的重写方法。我能注意到的唯一区别是评论集合表示: 确保此集合包含指定的元素 Set表示: 如果指定的元素尚未存在,则将其添加到此集合 因此,我觉得,从技术上讲,我们可以从Set中省略add的声明,而且整个Java集合框架仍然可以毫无问题地运行,但这仅仅是因为在Set中,add()的含义与Co

我遇到了
Collection
界面,如下所示:

boolean add(E e);
然后我遇到了
Set
接口,它扩展了
Collection
,具有相同的上述签名

由于签名相同,我认为
Set
Collection
中的重写方法。我能注意到的唯一区别是评论<代码>集合表示:

确保此集合包含指定的元素

Set
表示:

如果指定的元素尚未存在,则将其添加到此集合

因此,我觉得,从技术上讲,我们可以从
Set
中省略
add
的声明,而且整个Java集合框架仍然可以毫无问题地运行,但这仅仅是因为在
Set
中,
add()
的含义与
Collection
中的含义不同。 Q1.是这样吗?或者在
Set
中重写
add()
可以实现任何其他功能

Q2.这是整个框架的正常使用模式吗?其他接口层次结构是否遵循相同的原则


Q3.在子接口中重写来自超级接口的方法是多么正确,仅仅因为它在子接口中具有不同的含义,即使它具有相同的签名?(这是完全正确的吗?正如预期的那样,我不必要地发现它令人惊讶地奇怪,因为我是第一次面对它吗?

Q1:是的,我相信这只是为了添加更好的文档。问题2:是,请查看
列表
界面,它还使用更好的文档定义了add方法。问题3:这是正确的。您没有定义任何实现,因此在技术上没有覆盖,您只是在文档中更好地定义了该方法应该如何实现。如果您正在定义自己的集合实现和列表实现,并且您所拥有的只是集合上的javadoc,那么您可以这样想。。。你能确切地知道它应该如何表现吗?集合javadoc更通用,集合和列表javadoc更具体,因为它们描述了一个更具体的实现:Q1:是的,我相信这只是为了添加更好的文档。问题2:是,请查看
列表
界面,它还使用更好的文档定义了add方法。问题3:这是正确的。您没有定义任何实现,因此在技术上没有覆盖,您只是在文档中更好地定义了该方法应该如何实现。如果您正在定义自己的集合实现和列表实现,并且您所拥有的只是集合上的javadoc,那么您可以这样想。。。你能确切地知道它应该如何表现吗?集合javadoc更通用,集合和列表javadoc更具体,因为它们描述了更具体的实现相关: