类 HashMap 实现 Map 接口(interface):
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
类 LinkedHashMap 扩展了 HashMap ,这意味着它应该默认实现 Map 接口(interface)。为什么要显式实现 Map 接口(interface)?
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
你是对的:丢弃 Map<K,V>
来自链接 HashMap 的声明不会改变任何东西。虽然LinkedHashMap<K,V>
会实现Map<K,V>
仅仅因为它扩展了 HashMap<K,V>
,链接 HashMap 派生自常规 HashMap 的事实是一个实现细节,而不是硬性要求。
实现Map<K,V>
另一方面,接口(interface)是一项基本要求。如果设计者决定实现LinkedHashMap<K,V>
,这个要求就不会消失。从头开始,或者依赖其他一些基类,例如一个链表。
这就是为什么 LinkedHashMap<K,V>
的设计师提到Map<K,V>
明确地:如果在以后某个时候基类会因为重新设计而改变,接口(interface)将保持不变。