即使超类实现相同的接口,在子类中实现接口也有任何好处

Cha*_*Way 8 java oop

当我看到宣言时 ArrayList

class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
Run Code Online (Sandbox Code Playgroud)

List即使ArrayList超类AbstractList实现相同的List接口,它也会实现接口.

abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
Run Code Online (Sandbox Code Playgroud)

类似的声明上可以找到HashMap,LinkedHashMap也声明.

在此输入图像描述

在声明中LinkedHashMap,它Map仅实现接口,而不是其超类实现的其他接口HashMap.

因此,拥有此类声明可能会带来一些好处.

Kep*_*pil 6

再次声明它们没有任何功能上的好处,它不会以任何方式影响行为.

我想这只是为了更清楚地实现哪些接口.

  • @CharlesGreenWay我通常会写`Map <..> map = new LinkedHashMap <>()`,但很少`Cloneable cloneable = new LinkedHashMap <>()`...`LinkedHashMap`主要是`Map`,尽管它也实现了其他接口. (2认同)