Hashtable是否实现了Map接口中的每个方法?

时间:2013-07-16 09:08:25

标签: java hashtable

由于在Java中实现接口的类必须定义接口中的每个方法以避免被声明为abstract,我想知道以下内容:

当我创建一个实例化Hashtable对象的程序时,为什么我不需要在Map接口中定义每个方法?我没有明确定义的方法是自动创建的“存根”吗?

2 个答案:

答案 0 :(得分:6)

您正在从Hashtable类创建一个已经实现了所有必要方法的对象。您不是在创建一个类,而是从该类创建一个对象。 如果您创建了一个实现Map的类,编译器会要求您实现所有必要的方法。

答案 1 :(得分:2)

  

Hashtable是否实现了Map接口中的每个方法?

是。如果您查看JavaDoc,Hashtable类已被定义为

public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, Serializable

请注意,该类已将声明为 abstract ,并且实现了Map 。因此,它必须并且它确实实现了Map接口中定义的所有方法。

  

当我创建一个实例化Hashtable对象的程序时,为什么我不需要在Map接口中定义每个方法?

实例化对象时,其方法的实现由其类提供。因此,当您实例化Hashtable对象时,它会使用Hastable类已经提供的实现。

当您从中实例化对象时,创建类 而非 时,需要提供实现。在实例化时,类不能是抽象的,即实现应该已经存在;由JDK提供的Hashtable由您或类似提供。