3 回答

TA貢獻(xiàn)73條經(jīng)驗(yàn) 獲得超20個(gè)贊
List是一個(gè)接口,而ArrayList是一個(gè)類(lèi)。?
ArrayList繼承并實(shí)現(xiàn)了List,有些屬性和方法ArrayList有但是List沒(méi)有。
引用的話,聲明為L(zhǎng)ist,以后可以改為L(zhǎng)ist的其它實(shí)現(xiàn)類(lèi)。

TA貢獻(xiàn)12條經(jīng)驗(yàn) 獲得超2個(gè)贊
public?class?TestStudent?{ ?public?ArrayList<Course>?courses1; ?public?List<Course>?courses11; ?public?TestStudent(){ ??this.courses1=new?ArrayList<Course>(); ??this.courses11=new?ArrayList<Course>(); ?? ?} } class?Course{ ? }
你說(shuō)的引用應(yīng)該是這個(gè)樣子的把,我覺(jué)得引用就是一種指向的關(guān)系,是可以引用的,至于兩個(gè)引用有什么區(qū)別,就是ArrayList的區(qū)別和List的區(qū)別了。你看一下,接口和類(lèi)的關(guān)系,我們?cè)趯?shí)現(xiàn)接口的時(shí)候,必須要實(shí)現(xiàn)接口里面的所有方法,還有一些別的,但是我們還是可以在我們實(shí)現(xiàn)了這個(gè)類(lèi)之后再去添加新的東西。List是ArrayList的規(guī)范,但是除了規(guī)范我們還可以有別的屬于自己的東西。
還有就是接口不可以自己創(chuàng)建對(duì)象,不可以通過(guò)new關(guān)鍵字來(lái)實(shí)例,這個(gè)你應(yīng)該知道把?我們可以List list = new ArrayList();
但是不能 List list=new List();這樣是錯(cuò)的。而ArrayList list=new ArrayList();創(chuàng)建一對(duì)象則保留了ArrayList的所有屬性。?所以他必須要借助它的實(shí)現(xiàn)類(lèi)來(lái)完成。大概就這么多,我感覺(jué)這個(gè)問(wèn)題真想說(shuō)明白的話,真的很多啊,我也搞得不是太明白。
再往下等你學(xué)會(huì)所有的Java基礎(chǔ)自己肯定就明白了,還有后面的反射之類(lèi)的東西。

TA貢獻(xiàn)41條經(jīng)驗(yàn) 獲得超26個(gè)贊
public?ArrayList<Course>?courses1;這一句,用List和ArrayList都可以,因?yàn)樵撜Z(yǔ)句只是定義了一個(gè)引用,并沒(méi)有生成相關(guān)的實(shí)例對(duì)象。ArrayList實(shí)現(xiàn)了List接口,因?yàn)槎鄳B(tài)的關(guān)系這里L(fēng)ist定義的引用同樣適用于ArrayLsit。List是一個(gè)接口,接口可以定義一個(gè)引用,但不能new對(duì)象。
this.courses1?=?new?ArrayList<Course>(); 該語(yǔ)句new出了一個(gè)實(shí)例對(duì)象,所以這里不能換成List,必須換成List的實(shí)現(xiàn)類(lèi),只有實(shí)例類(lèi)才能new出對(duì)象,接口和抽象類(lèi)都不能new出對(duì)象,只能定義引用。
添加回答
舉報(bào)