※ 引述《SamLucien (黑)》之銘言:
: 我用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: 163.29.29.131
繼承是拿來用的?還是真的有關係阿?
從而由兩個角度來看
1.由上而下
2.由下而上
這兩個不同的觀點就會對於繼承的定義跟使用就會不同
然後你的問題就是把這兩個觀點搞在一起了,混著看了
我以反例來說明為何要繼承
腳色 劍士 魔法師 可不可不用要繼承還有多型呢?
當然可以阿!
所以各物件的行為如下
劍士{
void 用劍攻擊(魔法師);
void 男子漢的跑步();
void 男子漢的位置();
}
魔法師{
void 魔法攻擊(劍士);
void 烏龜的跑步();
void 老人的位置();
}
//然後要開始決鬥了
劍士.男子漢的跑步();
魔法師.烏龜的跑步();
if 劍士.男子漢的位置() == 魔法師.老人的位置(){
//決鬥!!!
劍士.用劍攻擊(魔法師);
魔法師.魔法攻擊(劍士);
}
以上就是沒有繼承還有多型的用法
看出來這會有什麼問題嗎?
因為書上都是跟你說要用這個!要用那個!
所以看完之後,會有一種疑問就是:真的假的?!
所以你可以反思
如果不用的話
會怎麼樣?
通常你寫個短短的範例之後,就會卡住了
然後你就明白書上寫的了