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