0

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

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

4

2 回答 2

6

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

于 2013-07-16T09:09:56.810 回答
2

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

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

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

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

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

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

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

于 2013-07-16T09:19:56.557 回答