作者hoehoeshiaw (a350330)
看板java
標題[問題] 新手關於物件導向的問題
時間Tue Nov 13 13:40:40 2018
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://webptt.com/m.aspx?n=bbs/java/M.1542087642.A.DB8.html
1F:→ gama79530: 只有一般的class可以new,其他都不行 11/13 14:39
2F:→ gama79530: 第一個問題你可以用關鍵字"動態繫結"去google 11/13 14:43
3F:推 lemon651: Animal是interface 定義了應該move 但是Human這個class 11/13 15:02
4F:→ lemon651: 實踐了move 舉例來說狗也是animal人也是animal但是move 11/13 15:02
5F:→ lemon651: 的速度或方式可以不一樣 就是各自的類去實踐定義 11/13 15:02
6F:→ lemon651: 沒看清楚 他是abstract class差不多意思 abstract class 11/13 15:03
7F:→ lemon651: 可以預定義move 11/13 15:03
8F:→ lemon651: 他這邊是直接override了 11/13 15:03
9F:→ LZN: new Human()就表示實際產生是Human instance, 而Animal a = X 11/13 15:07
10F:→ LZN: 表示把X在變數a中當作Animal來操作, 因此a可以使用Animal所 11/13 15:10
11F:→ LZN: 定義的method, 而method到底怎運作是看該X到底是什麼instance 11/13 15:11
12F:推 toy9986619: 介面不能new 出物件 11/18 00:24
13F:→ toy9986619: 抽出來做介面的原因是因為寫在class也要繼承的情況下 11/18 00:26
14F:→ toy9986619: ,有修情況會變得很怪 11/18 00:26
15F:→ toy9986619: 例如行走好了,動物可以行走,機器人可以行走, 11/18 00:26
16F:→ toy9986619: 如果為了維護而把行走寫在動物,要機器人繼承動物的 11/18 00:26
17F:→ toy9986619: 話就會變得很怪 11/18 00:26
18F:→ toy9986619: 所以寫成介面,預先告知有哪些method 11/18 00:29
19F:→ toy9986619: 實作介面的class必須實作出在介面定義的method 11/18 00:29
20F:→ toy9986619: 這樣用介面的變數(遙控器)去參考物件(實體)時才能進 11/18 00:29
21F:→ toy9986619: 行操作 11/18 00:29