2011-02-14 61 views
0

我是Java新手。我想知道什麼時候應該使用基類的引用,以及何時應該創建一個新對象。我的意思是,我們可以寫何時應該在聲明新對象時使用接口與實現?

List list = new ArrayList(); 

ArrayList list = new ArrayList(); 

如何確定使用什麼???

+0

獲取http://www.wrox.com/WileyCDA/WroxTitle/Ivor-Horton-s-Beginning-Java-2-JDK-5-Edition.productCd-0764568744.html和幾袋咖啡(豆類) 。 – Augusto 2011-02-14 11:18:33

+2

[List vs ArrayList]可能的重複(http://stackoverflow.com/questions/4062982/list-versus-arraylist) – Epaga 2011-02-14 11:19:30

回答

4

它的確定同時使用,但前者是首選,因爲它總是更好地調用實現的方法使用對Interface或超類型(List)的引用。前者不依賴於實現,並且在實現(ArrayList)更改時不需要更改代碼,但後者需要您在實現更改爲ArrayList之外的任何其他位置時更改代碼。

4

使用

List list = new ArrayList();

永遠學習與接口進行編程。明天你就可以有新的實施

4

加成@Jigar我的建議是用這種方式類型安全

List<T> list = new ArrayList<T>(); 
2

通常沒關係。一個接口只定義了一組可以在對象上調用的方法:對象implements接口。重要的是當你可能有多個接口的實現時。比方說,你必須做一些事,實現車輛接口的對象的方法:

public static double getSpeed(Vehicle vehicle) { 
    return vehicle.getSpeed(); 
} 

你想通過界面四周,你不關心的對象是汽車或麪包車或什麼的,並且您希望此方法適用於此界面的所有實施 - 即所有類型的車輛。他們都實現了Vehicle接口,所以你知道你可以調用getSpeed()方法。如果你這樣做:

public static double getSpeed(Car car) { 
    return car.getSpeed(); 
} 

那麼你的方法不會爲貨車或卡車的工作,儘管他們都實現了車輛接口,因此雙方都.getSpeed()方法。

相關問題