看板 java 關於我們 聯絡資訊
※ 引述《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)