Re: [問題] 多型的需要???
※ 引述《conan77420 (小馬非馬)》之銘言:
: example2
: 所有的樂器都繼承了樂器,你希望所有的樂器都demo/play一次
: 你可以使用`樂器`的play來呼叫所有樂器的play
: 最近在看多型,經過爬文後自己大概有個結論可是不知道對不對
: 我想確定的是,多型是為了多個物件重複執行相同動作而誕生的概念
: 就像例子二,所有樂器都要play所以使用`樂器`的play來呼叫所有樂器的play
: 所以也就是說,不能選擇只play某部份的樂器,
: 多型的概念在於,繼承後的物件,都一定要執行此動作囉?
: 假設,小提琴有繼承〝樂器〞,鼓沒有繼承〝樂器〞,所以要撥放的只有小提琴
: 相反的如果兩個都有繼承〝樂器〞,當〝樂器〞的play()被執行時,兩個都要撥放囉?
你這樣講好像是在說
「執行一次 〝樂器〞的play(),小提琴和鼓都會被play」
感覺像是你把類別和實體搞混了
類別:樂器
子類別:小提琴(繼承樂器)、鼓(繼承樂器)
實體:我的小提琴、我的鼓
一般來說應該只有實體能夠被播放吧
所以發生的事情應該是
我把 我的小提琴 當作 樂器 來呼叫〝樂器〞的play()
此時我的琴的琴弦被摩擦了(小提琴的play)
我把 我的鼓 當作 樂器 來呼叫〝樂器〞的play()
此時我的鼓的鼓皮震動了(鼓的play)
好處是,我可以不用知道這兩個東西實際上到底是小提琴還是鼓
我只要知道他們都是樂器,對他們分別呼叫〝樂器〞的play()就可以了
如果不是這樣的話,我就非得先判別他們到底是什麼不可
如果鼓沒有繼承樂器呢?那麼你無法對 我的鼓 呼叫〝樂器〞的play()...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.17.6
討論串 (同標題文章)