为什么我们使用接口引用一个子对象?为什么我们使用接口引用一个子对象?
例如:
Map m = new HashMap();
为什么呢?
相反,我们可以使用
HashMap hm = new HashMap();
为什么我们使用接口引用一个子对象?为什么我们使用接口引用一个子对象?
例如:
Map m = new HashMap();
为什么呢?
相反,我们可以使用
HashMap hm = new HashMap();
日后还可以更改为其他类的对象。例如,
Map m = new HashMap();
m = new TreeMap();
这样您可以随时轻松更改实施。
第二点需要注意的是,通过使用接口引用,您只能调用在接口中声明的子类的方法。
您将无法调用那些未在接口中声明的子类的方法,因此没有重写方法。
来自Joshua Bloch's,Effective Java,他说如果可能的话,通过接口引用对象会更好。这将为您的程序提供更大的灵活性,如果您决定要切换实现,则只需在构造函数中更改类名即可。更改实施的原因可能是更好的性能或额外的功能。
// favorable
List users = new Vector();
// dont do this if possible
Vector users = new Vector();
如果没有接口存在,那么通过类而不是接口来引用对象是完全正确的。