→ yuxds: 我覺得不能說是以偏概全 而是那樣的情況你才會用繼承 05/03 21:32
→ yuxds: 不會說 我要一台跑車 然後跑車去繼承動物類別再改寫內容 05/03 21:33
這正是我想到的點 如果我今天故意拿跑車繼承動物
那按照語法 就變成跑車is a動物
聽起來就很不合理
推 yuxds: 我覺得你可以舉個例子 05/03 21:53
→ yuxds: 怎樣的情況是你會用繼承 然後用子包含父類別是聽起來很順的 05/03 21:53
推 LPH66: is-a 這個名字會這麼叫就是用英文的 is a 連起來表示關係 05/03 23:54
→ LPH66: 狗 is a 動物 ← 像是這種關係 05/03 23:55
→ LPH66: 也就是說動物能做的事狗也能做, 雖然怎麼做可能不盡相同 05/03 23:55
→ LPH66: 你需要動物做事的地方你可以抓一隻狗來 05/03 23:56
但是如果是我上面舉的跑車繼承動物例子 就很怪了
→ ssccg: 修改是指改內部的實作,對外的介面是不能變的 05/04 02:30
→ ssccg: 對外部來說,就可以把子類別的物件當成父類別的物件來用 05/04 02:33
這裡不是很懂 可以再解釋一下「對外的介面是不能變」的意思嗎
→ ssccg: 子類別的物件就是一個(is-a)父類別的物件 05/04 02:33
→ ssccg: 物件導向的封裝就是只看公開介面,去想裡面怎麼做的就偏了 05/04 02:37
→ ssccg: 對compiler或interpreter來說要實作這種設計當然會變成記憶 05/04 02:38
→ ssccg: 體裡子類別的那份裡面要放一份父類別的東西,但是那不是你 05/04 02:39
→ ssccg: 時要去擔心的事 05/04 02:42
※ 編輯: lueichun (59.120.148.217), 05/04/2018 09:58:35
→ pttworld: 那是你取名叫跑車,取名黑豹不就是了 05/04 10:21
→ pttworld: 另一點因為繼承動物,你的跑車只會有動物的特性 05/04 10:22
→ pttworld: 不會因為他叫跑車就多了引擎和輪子 05/04 10:23
→ pttworld: 即使你在跑車類新增引擎輪子,他只是像動物的跑車 05/04 10:24
→ ssccg: 以你的例子來說,假設跑車繼承動物(用哺乳動物比較單純) 05/04 10:46
→ ssccg: 這個跑車外顯行為一定有會呼吸、兩性生殖、會哺乳..等 05/04 10:47
→ ssccg: 繼承了什麼就決定了它是什麼 05/04 10:48
→ ssccg: 你會說出跑車繼承動物其實觀念就有問題,不是先有兩個類別 05/04 10:48
→ ssccg: 再去套繼承關係,是先有父類別,子類別一定是其衍生 05/04 10:48
推 gmoz: 請從用途跟需求出發 05/04 16:04
※ 編輯: lueichun (36.230.19.60), 05/04/2018 21:09:39