为什么在已经在父母身上实现接口时实现接口?

Mor*_*Adi 5 java oop collections jvm interface

我在很多地方甚至在Java核心本身看到,尽管在父类中实现了一个接口,但子类明确地实现了相同的接口.

作为一个例子,这是一个AbstractSet实现Set 的定义

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E> 
Run Code Online (Sandbox Code Playgroud)

和HashSet扩展AbstractSet.

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)

我们为什么要再次明确实施Set?再次LinkedHashSet延伸相同的模式HashSet.

public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable 
Run Code Online (Sandbox Code Playgroud)

LinkedHashSet延伸Hashset,

HashSet农具Set<E>,Cloneable,java.io.Serializable

LinkedHashSet隐式实现所有接口,其父级扩展.那么为什么呢?我试图搞清楚,但我找不到背后的原因.即使是为了可读性,为什么不明确地实现Collection?

如果删除这个不必要的implements关键字,它的可读性更强 有谁知道这背后的原因?

我在SOF上看到了一些关于这个的问题,但我不相信这是为了更好的可读性,如果这也是为什么不实现Collection接口呢?