作者SamLucien (黑)
看板java
標題[問題] is-a 關係在Java程式的時候的用意?
時間Wed Jul 31 17:47:27 2013
我用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)
→ chunhsiang:主要就是多型 可以化簡背後複雜的東西 07/31 18:11
→ jtorngl:(2) 可以new LinkedList<xxx>()或任何 is a List的class 07/31 20:52
→ jtorngl:Role的問題,可以看head first design pattern第一章 07/31 20:53
→ jtorngl:如果java的polymorphism你看不懂的話 07/31 20:54
→ jtorngl:head first java說明多型時是用動物(園)當例子,也容易懂 07/31 20:56
→ n52095467:宣告為Role的話以後轉職比較方便 08/01 00:34
推 kaocoming:樓上真是一語道破 簡單易懂的解釋 08/01 09:01
→ adrianshum:其實樓樓上反而是說錯了。轉職代表是某人由Swordman 轉 08/01 09:18
→ adrianshum:成 Magician, 這種寫法並不會讓這事變得容易 08/01 09:19
推 abcf:初心者可以轉職成任何職業 劍士沒辦法轉職成馴獸師 他沒說錯 08/01 11:39
→ andymai:初心者到職業的階段~算是"轉職"嗎?因為每個人可以做每種職 08/01 12:51
→ andymai:業~但是職業間無法互相轉換~"轉職"應該是指後者吧... 08/01 12:53