看板 java 關於我們 聯絡資訊
https://i.imgur.com/BdHF4bX.jpghttps://i.imgur.com/xrfqFFA.jpg
第二題我很確定它的解析完全錯誤…… 只是我不太懂為什麼它是呼叫human的move而不是animal的move? 然後請教各位前輩介面可以生成物件嗎? 像是 Movable m = new Mammal()合法嗎? 請大家幫幫忙了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.216.148.139 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1542087642.A.DB8.html
gama79530: 只有一般的class可以new,其他都不行 11/13 14:39
gama79530: 第一個問題你可以用關鍵字"動態繫結"去google 11/13 14:43
lemon651: Animal是interface 定義了應該move 但是Human這個class 11/13 15:02
lemon651: 實踐了move 舉例來說狗也是animal人也是animal但是move 11/13 15:02
lemon651: 的速度或方式可以不一樣 就是各自的類去實踐定義 11/13 15:02
lemon651: 沒看清楚 他是abstract class差不多意思 abstract class 11/13 15:03
lemon651: 可以預定義move 11/13 15:03
lemon651: 他這邊是直接override了 11/13 15:03
LZN: new Human()就表示實際產生是Human instance, 而Animal a = X 11/13 15:07
LZN: 表示把X在變數a中當作Animal來操作, 因此a可以使用Animal所 11/13 15:10
LZN: 定義的method, 而method到底怎運作是看該X到底是什麼instance 11/13 15:11
toy9986619: 介面不能new 出物件 11/18 00:24
toy9986619: 抽出來做介面的原因是因為寫在class也要繼承的情況下 11/18 00:26
toy9986619: ,有修情況會變得很怪 11/18 00:26
toy9986619: 例如行走好了,動物可以行走,機器人可以行走, 11/18 00:26
toy9986619: 如果為了維護而把行走寫在動物,要機器人繼承動物的 11/18 00:26
toy9986619: 話就會變得很怪 11/18 00:26
toy9986619: 所以寫成介面,預先告知有哪些method 11/18 00:29
toy9986619: 實作介面的class必須實作出在介面定義的method 11/18 00:29
toy9986619: 這樣用介面的變數(遙控器)去參考物件(實體)時才能進 11/18 00:29
toy9986619: 行操作 11/18 00:29