作者guestciel (mm)
看板java
標題Re: [問題] 宣告成List跟ArrayList的不同
時間Tue Sep 1 23:56:11 2009
※ 引述《inventorr (風之子)》之銘言:
各位大大 小弟想請教一下:
List list1 = new ArrayList();
ArrayList list2 = new ArrayList();
我想建立一個ArrayList物件
但list1用interface宣告 list2用類別宣告
這樣在實際應用有什麼區別 可否舉例說明一下
大謝 ^_^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 76.125.177.17
推 PsMonkey:list1 只能當作 List 用 08/31 14:16
→ PsMonkey:兩者差異,通常設計 method 參數的時候才會有感覺.... 08/31 14:17
用推文太麻煩了...剛好今天話多解釋一下上面這段好了..(我猜測板大的意思啦~)
應是如果一個method的參數宣告為List
就代表可以吃所以實作List的類別(ex:ArrayList, Vector...)彈性較大...
還有個很好的例子就是 Object class..
可多研究一下API...想一下method們為何會這樣設計...
如有誤請見諒^^"
→ inventorr:但是list1不是應該也能用Arraylist裡的method跟屬性嗎? 08/31 18:27
→ inventorr:除了method傳參數型別外 還有其他不同嗎? 08/31 18:30
→ aids61517:list1只能使用List有的方法,但實際執行內容是ArrayList 08/31 19:41
→ aids61517:中的方法,如果List沒有,而ArrayList有的方法,list1 08/31 19:43
→ aids61517:去使用那個方法,會產生錯誤訊息 08/31 19:44
推 slalala:請參考繼承本觀念 08/31 21:37
推 slalala:哀呀 不是繼承 應該是實作QQ 08/31 21:46
→ inventorr:了解了 :) 09/01 04:11
→ etman395:這是多型的概念 09/01 15:18
推 XXOO:所以是說如果要用ArrayList才有(List沒有)的方法,一定要宣告 09/01 17:09
→ XXOO:成ArrayList list2 = new ArrayList(); 是這樣嗎-.-? 09/01 17:11
推 PsMonkey:==.==== 請多 try 程式碼 09/01 17:56
→ aids61517:樓樓上,是的,這個是多型的觀念 09/01 21:16
推 marcX:instanceof 判斷型態後再case成ArrayList也是可行的! 09/01 21:28
推 guestciel:好處等你長大就會懂了<-很玄...但是真的Orz... 09/01 23:29
推 guestciel:另你推文的問題樓上是正確答案..白話的關鍵字是"轉型" 09/01 23:33
→ guestciel:簡單例子..一般員工和主管都繼承職員抽象類別..在新增員 09/01 23:36
→ guestciel:工或主管時都習慣宣告成職員類別..最直接的好處是可以 09/01 23:39
→ guestciel:放在一個陣列裡用迴圈處理.. 09/01 23:40
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.119.66
※ 編輯: guestciel 來自: 123.204.119.66 (09/02 00:17)