[問題] is-a 關係在Java程式的時候的用意?

看板java作者 (黑)時間12年前 (2013/07/31 17:47), 編輯推噓2(2010)
留言12則, 7人參與, 最新討論串1/3 (看更多)
我用Java SE技術手冊 良葛格 這本想提問題 (第六章 6-7頁) 一個遊戲 腳色(Role)類別 劍士(SwordsMan)、魔法師(Magician) 則是繼承了 Role類別的所有基本腳色該有的東西 也就是 SwordsMan is-a Role , Magician is-a Role 通常在Java 看到的實作劍士(SwordsMan)、魔法師(Magician) 通常都會這樣寫:(1) SwordsMan role1 = new SwordsMan(); Magician role2 = new Magician(); 但是,通常也會看到這樣寫:(2) Role role1 = new SwordsMan(); Role role2 = new Magician(); 我想請問的是這兩種寫法有什麼差別? 因為現在遇到看不懂的地方也包含 就我的認知是應該這樣寫 ArrayList<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); 但是看到這 就不知道為什麼 可以這樣寫 用意何在? List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); 就是想問說(1)與(2) 這樣的寫法 有什麼差別呢??? (2) 的寫法有什麼用意??? 謝謝大家~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 113.196.180.48 ※ 編輯: SamLucien 來自: 113.196.180.48 (07/31 18:02) ※ 編輯: SamLucien 來自: 113.196.180.48 (07/31 18:02)

07/31 18:11, , 1F
主要就是多型 可以化簡背後複雜的東西
07/31 18:11, 1F

07/31 20:52, , 2F
(2) 可以new LinkedList<xxx>()或任何 is a List的class
07/31 20:52, 2F

07/31 20:53, , 3F
Role的問題,可以看head first design pattern第一章
07/31 20:53, 3F

07/31 20:54, , 4F
如果java的polymorphism你看不懂的話
07/31 20:54, 4F

07/31 20:56, , 5F
head first java說明多型時是用動物(園)當例子,也容易懂
07/31 20:56, 5F

08/01 00:34, , 6F
宣告為Role的話以後轉職比較方便
08/01 00:34, 6F

08/01 09:01, , 7F
樓上真是一語道破 簡單易懂的解釋
08/01 09:01, 7F

08/01 09:18, , 8F
其實樓樓上反而是說錯了。轉職代表是某人由Swordman 轉
08/01 09:18, 8F

08/01 09:19, , 9F
成 Magician, 這種寫法並不會讓這事變得容易
08/01 09:19, 9F

08/01 11:39, , 10F
初心者可以轉職成任何職業 劍士沒辦法轉職成馴獸師 他沒說錯
08/01 11:39, 10F

08/01 12:51, , 11F
初心者到職業的階段~算是"轉職"嗎?因為每個人可以做每種職
08/01 12:51, 11F

08/01 12:53, , 12F
業~但是職業間無法互相轉換~"轉職"應該是指後者吧...
08/01 12:53, 12F
文章代碼(AID): #1H-Dqp0k (java)
討論串 (同標題文章)
文章代碼(AID): #1H-Dqp0k (java)