[問題] 新手關於物件導向的問題

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

Links booklink

Contact Us: admin [ a t ] ucptt.com