這樣理解有錯嗎?求指教
實例中:Course類中有int-ID,和String-name兩個屬性。
在ListTest類中,先定義一個屬性是public List coursesTOSelect;定義一個public開放性,List接
口類型,名稱coursesToSelect的屬性(成員、變量)。因為List只是一個接口,里面只有抽象的方法
,不能具體實現(xiàn),所以指向了ArrayList類的功能。同時ArrayList類里面也已經(jīng)將List接口中的方法
實現(xiàn)化包含了。符合接口定義的抽象方法規(guī)范必須實現(xiàn)這一規(guī)則。
創(chuàng)建構(gòu)造方法:public ListTest(){this.coursesToSelect = ArrayList();}
方便創(chuàng)建一個List類型coursesToSelect屬性指向ArrayList新對象時重復書寫代碼,可以直接調(diào)用。
因為是構(gòu)造方法ListTest類本身,所以構(gòu)建類對象本身的時候,就會運作此段代碼。
public void testAdd(){/*此方法創(chuàng)建一個課程對象,并通過調(diào)用add方法,添加到備選課程List中*/
? ?Course cr1 = new Course("1","數(shù)據(jù)結(jié)構(gòu)");/*創(chuàng)建一個課程類的對象并輸入?yún)?shù)*/
? ?coursesToSelect.add(cr1);/*把創(chuàng)建好的課程類的對象cr1,用List類型功能指向ArrayList的變
量courseToSelect,運用ArrayList的方法.add,加入到變量中去*/
? ?Course temp = (Course)coursesToSelect.get(0);/*cr1對象創(chuàng)建的時候本來是Course類型,因為
通過List-ArrayList.add加入到它們的變量中corsesToSelect中去,是集合之中的其中一員類型隨之
已轉(zhuǎn)化為Object是所有類的父類,最為原始的類,取出來調(diào)用,需要重新定義聲明一個Course類的對
象temp進行存放,并將其強制轉(zhuǎn)化為Course類,因為本來原始數(shù)據(jù)就是Course類,所以轉(zhuǎn)化過程中不
會有溢出或者出錯,get的參數(shù)值為0是下標,帶有數(shù)組的特性,首個數(shù)據(jù)存放容器地址是0,跟數(shù)組的
不同之處是,數(shù)組定義的長度是既定的,而且不去進行改動容器中的數(shù)據(jù)和對應的下標是不會有改動
。List-ArrayList中的數(shù)據(jù)和下標是會隨之新添加的新對象而進行遞增的,添加時不進行特定操作默
認添加下標為0,原本在0下標的數(shù)據(jù)自動推進位置+1,整個List-ArrayList屬性容量也會+1,值得一
提的是在新添加對象的時候,新添加指定下標位置不能超過原有的長度,只能在頭部尾部或中間位置
插入,不能在頭部之前或尾部之后進行操作*/
? ?System.out.println("添加了課程:"+temp.id+":"+temp.name);/*輸出重新定義的對象temp中的
屬性*/
}
2015-05-11
理解的不錯。ArrayList類是接口List的一個實現(xiàn)類,List接口主要是提供某些方法的定義,而ArrayList類用自己的方式實現(xiàn)了接口List中定義的方法,所以ArrayList類定義的對象都能實現(xiàn)接口List定義的方法。所以在實例化時候,是對List接口的實現(xiàn)類ArrayList運行其構(gòu)造函數(shù),即this.coursesToSelect = ArrayList()。
2014-12-21
太多了沒看完。
這一行有錯public ListTest(){this.coursesToSelect = ArrayList();},
ArrayList()是ArrayList類的構(gòu)造函數(shù),要調(diào)用這個函數(shù)創(chuàng)建ArrayList類的對象,需要new關(guān)鍵字,這個構(gòu)造函數(shù)跟普通方法的區(qū)別。