課程
/后端開發(fā)
/Java
/Java入門第三季
為什么一般老師在視頻里用List course = new ArrayList();而不是ArrayList course = new ArrayList();?
2017-04-03
源自:Java入門第三季 4-6
正在回答
為什么是List?list?=?new?ArrayList(),而不直接用ArrayList?編程是要面向對象編程,針對抽象(接口),而非具體?List?是接口,ArrayList是實現(xiàn)?實現(xiàn)List接口的有ArrayList、LinkedList、Vector等,所以用哪個就直接new?一個接口實現(xiàn)這是一種很好的設計模式.一個接口有多種實現(xiàn),這種寫法是java面向對象的一種思想,依賴倒置原則,即依賴于抽象不依賴于實現(xiàn)(具體)。?給調用者提供的應該是接口或者抽象類,而實現(xiàn)者可以實現(xiàn)或者繼承接口或者抽象類來滿足調用者,這樣調用者不必知道實現(xiàn)者怎樣操作,實現(xiàn)者也可以根據(jù)具體情況去實現(xiàn),這樣去除了耦合。這就是java設計模式的基礎思想之一。?從Java語法上,這種方式是使用接口引用指向具體實現(xiàn),這樣大大提高了代碼使用的靈活性。?比如,你若希望用LinkedList的實現(xiàn)來替代ArrayList的話,只需改動一行即可:??List???list???=???new???LinkedList();??而程序中的其它部分不需要改動,這樣比較靈活,不會失去通用性。
為什么是List?list?=?new?ArrayList(),而不直接用ArrayList?
編程是要面向對象編程,針對抽象(接口),而非具體
?List?是接口,ArrayList是實現(xiàn)
?實現(xiàn)List接口的有ArrayList、LinkedList、Vector等,所以用哪個就直接new?一個接口實現(xiàn)這是一種很好的設計模式.
一個接口有多種實現(xiàn),這種寫法是java面向對象的一種思想,依賴倒置原則,
即依賴于抽象不依賴于實現(xiàn)(具體)。
?給調用者提供的應該是接口或者抽象類,而實現(xiàn)者可以實現(xiàn)或者繼承接口或者抽象類來滿足調用者,
這樣調用者不必知道實現(xiàn)者怎樣操作,實現(xiàn)者也可以根據(jù)具體情況去實現(xiàn),這樣去除了耦合。這就是java設計模式的基礎思想之一。
?從Java語法上,這種方式是使用接口引用指向具體實現(xiàn),這樣大大提高了代碼使用的靈活性。
?比如,你若希望用LinkedList的實現(xiàn)來替代ArrayList的話,只需改動一行即可:
??List???list???=???new???LinkedList();
??而程序中的其它部分不需要改動,這樣比較靈活,不會失去通用性。
以上文字來自:?https://wenku.baidu.com/view/7c6cda3510661ed9ad51f343.html
某向陽 提問者
Gir非碼農 回復 某向陽 提問者
List是個集合接口
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
2 回答為什么List<Course>courses=new ArrayList<Course>();運行會出錯,而List<Integer>list = new ArrayList<Integer>();卻不會?
3 回答把 this.courseToSelect=new ArrayList(); 改為 List courseToSelect=new ArrayList(); 發(fā)生異常
4 回答List與Arraylist
5 回答為什么我創(chuàng)建List類型的屬性時要寫成public List<Course> courseToSelect;初始化也要寫成this.coursesToSelect = new ArrayList<Course>();才能通過
5 回答就在圖中的list<Course> course與 上一節(jié)的list course ,有什么不同?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2017-04-05
2017-04-03
List是個集合接口