2016-02-01 25 views
-1
List<String> list = new ArrayList<String>(); 

在識別除超類和子類以外的零件時,List和ArrayList是什麼?什麼是初始化時調用超類和子類?

是List引用和ArrayList的類嗎?

他們會被稱爲別的東西,如果他們是相同的,如:

ArrayList<String> list = new ArrayList<String>(); 
+0

超類不需要是一個接口,它可能是另一個類。你提供的重複鏈接是關於接口的。 – tazboy

+0

概念上,它是一樣的。 'List'是'ArrayList'的超類型。而'List'是一個由'ArrayList'實現的接口(並且有很多實現)。有了這樣的結構,你就可以有效地做所謂的「編程接口」。因此,鏈接的問題。 – Tunaki

回答

1

List是一個接口。 ArrayList是它的一個實現。既不是另一個的超類或子類。

1

有三個部分此聲明:

  1. 命名引用(list
  2. 的編譯時,靜態類型的基準的(List<String>
  3. 運行時間,動態類型的參考(ArrayList<String>

無論如何修改編譯時間typ即

List是一個接口; ArrayList是該接口的一個實現。

0

在第一個示例中List是定義對象的引用類型的接口listArrayList是接口的實現,它是實際對象的類型。 在第二示例中,兩個對象及其引用具有類型ArrayList

0

差異:

  • 首先之一,只有接口List的方法可以將列表對象上被調用。多態現象在這裏。
  • 第二個,可以在列表對象上調用ArrayList類的方法。第一個

優點:

即使您更改實施:

List<String> list = new LinkedList<String>(); 

List<String> list = new Vector<String>(); 

你沒有改變,其餘代碼。