【发布时间】:2017-06-29 12:16:03
【问题描述】:
为什么我们要对子对象使用接口引用?
例如:
Map m = new HashMap();
为什么?
我们可以使用
HashMap hm = new HashMap();
【问题讨论】:
标签: java
为什么我们要对子对象使用接口引用?
例如:
Map m = new HashMap();
为什么?
我们可以使用
HashMap hm = new HashMap();
【问题讨论】:
标签: java
您可以稍后将其更改为其他类的对象。例如,
Map m = new HashMap();
m = new TreeMap();
这样您可以随时轻松更改实现。
需要注意的第二点是,使用接口引用只能调用接口中声明的子类的那些方法。
您将无法调用未在接口中声明的子类的那些方法,因此它们不是被覆盖的方法。
【讨论】:
在 Joshua Bloch 的 Effective Java 中,他说如果可能的话,最好通过对象的接口来引用对象。这将为您的程序提供更大的灵活性,如果您决定要切换实现,您需要做的就是更改构造函数中的类名。更改实现的原因可能是更好的性能或额外的功能。
// favorable
List users = new Vector();
// dont do this if possible
Vector users = new Vector();
如果没有接口存在,则按类而不是接口来引用对象是完全可以的。
【讨论】: