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