爲什麼我們使用接口引用一個子對象?爲什麼我們使用接口引用一個子對象?
例如:
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();
如果沒有接口存在,那麼通過類而不是接口來引用對象是完全正確的。