3 回答

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

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

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