Re: [問題] 宣告成List跟ArrayList的不同

看板java作者 (mm)時間16年前 (2009/09/01 23:56), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《inventorr (風之子)》之銘言: 各位大大 小弟想請教一下: List list1 = new ArrayList(); ArrayList list2 = new ArrayList(); 我想建立一個ArrayList物件 但list1用interface宣告 list2用類別宣告 這樣在實際應用有什麼區別 可否舉例說明一下 大謝 ^_^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.125.177.17

08/31 14:16,
list1 只能當作 List 用
08/31 14:16

08/31 14:17,
兩者差異,通常設計 method 參數的時候才會有感覺....
08/31 14:17
用推文太麻煩了...剛好今天話多解釋一下上面這段好了..(我猜測板大的意思啦~) 應是如果一個method的參數宣告為List 就代表可以吃所以實作List的類別(ex:ArrayList, Vector...)彈性較大... 還有個很好的例子就是 Object class.. 可多研究一下API...想一下method們為何會這樣設計... 如有誤請見諒^^"

08/31 18:27,
但是list1不是應該也能用Arraylist裡的method跟屬性嗎?
08/31 18:27

08/31 18:30,
除了method傳參數型別外 還有其他不同嗎?
08/31 18:30

08/31 19:41,
list1只能使用List有的方法,但實際執行內容是ArrayList
08/31 19:41

08/31 19:43,
中的方法,如果List沒有,而ArrayList有的方法,list1
08/31 19:43

08/31 19:44,
去使用那個方法,會產生錯誤訊息
08/31 19:44

08/31 21:37,
請參考繼承本觀念
08/31 21:37

08/31 21:46,
哀呀 不是繼承 應該是實作QQ
08/31 21:46

09/01 04:11,
了解了 :)
09/01 04:11

09/01 15:18,
這是多型的概念
09/01 15:18

09/01 17:09,
所以是說如果要用ArrayList才有(List沒有)的方法,一定要宣告
09/01 17:09

09/01 17:11,
成ArrayList list2 = new ArrayList(); 是這樣嗎-.-?
09/01 17:11

09/01 17:56,
==.==== 請多 try 程式碼
09/01 17:56

09/01 21:16,
樓樓上,是的,這個是多型的觀念
09/01 21:16

09/01 21:28,
instanceof 判斷型態後再case成ArrayList也是可行的!
09/01 21:28

09/01 23:29,
好處等你長大就會懂了<-很玄...但是真的Orz...
09/01 23:29

09/01 23:33,
另你推文的問題樓上是正確答案..白話的關鍵字是"轉型"
09/01 23:33

09/01 23:36,
簡單例子..一般員工和主管都繼承職員抽象類別..在新增員
09/01 23:36

09/01 23:39,
工或主管時都習慣宣告成職員類別..最直接的好處是可以
09/01 23:39

09/01 23:40,
放在一個陣列裡用迴圈處理..
09/01 23:40
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.119.66 ※ 編輯: guestciel 來自: 123.204.119.66 (09/02 00:17)
文章代碼(AID): #1AdKGS4C (java)