Re: [問題] 多型的需要???

看板C_and_CPP作者 (剛勇鎮西一)時間14年前 (2009/10/15 23:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《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
文章代碼(AID): #1ArqBIsZ (C_and_CPP)
文章代碼(AID): #1ArqBIsZ (C_and_CPP)