可能重复:
Java.util.HashMap — 为什么 HashMap 扩展 AbstractMap 并实现 Map?
为什么父类和子类都实现相同的接口?
WeakHashMap<K,V>被声明为扩展AbstractMap<K,V>并实现Map<K,V>。
但是AbstractMap<K,V>已经实现了Map<K,V>。看起来implements
声明是多余的。
它被宣布的原因是什么?
可能重复:
Java.util.HashMap — 为什么 HashMap 扩展 AbstractMap 并实现 Map?
为什么父类和子类都实现相同的接口?
WeakHashMap<K,V>被声明为扩展AbstractMap<K,V>并实现Map<K,V>。
但是AbstractMap<K,V>已经实现了Map<K,V>。看起来implements
声明是多余的。
它被宣布的原因是什么?
除非有人能够指出WeakHashMap
JDK 的作者在网上某处发布的原因,否则我们只能推测。推测是它改进了自动生成的文档。它对类公开的接口或您如何使用它没有影响。
虽然它确实是多余的,但它确保了如果接口实现从父级中移除,子级仍然会被Map
接口持有并产生必要的编译错误。
这个“看起来”像是一个俯瞰。如果您扩展一个类,您将自动实现基类实现的所有接口(无论该基类是否abstract
存在)。所以,给定:
public interface I {}
public class A implements I {}
你声明:
public class B extends A {}
上面的声明严格等同于
public class B extends A implements I {}
确实是一个俯瞰。很好的发现;)