看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《sunneo (艾斯寇德)》之銘言: : ※ 引述《ms6163 ()》之銘言: : : 最近正在看多型的東西 : : 忽然產生一個問題: : : 為什麼我們需要多型呢??? : : 沒有多型的話 在實際開發中會遇到什麼樣的困難??? : : (我了解有沒有用virtual的結果有什麼差別,但是在實際的開發中,我們會在什麼樣 : : 的情況下會把derived class轉成based class??) : 你希望為一個type family的instance作一件重複的,同樣的事情 : 你知道他們有一個最頂層的super type : 那麼你只需要為這個root作一份subroutine : 就可以對這些sub type作同樣的呼叫 : example1 : Add Listener for components : 一個設計的視窗元件,他們都繼承了component, : 你希望為他們都加上listener : 這時候polymorphism就很好用了 : 可以搭配陣列、指標、參照,一口氣為需要的subtype作同樣的操作 example2 所有的樂器都繼承了樂器,你希望所有的樂器都demo/play一次 你可以使用`樂器`的play來呼叫所有樂器的play 最近在看多型,經過爬文後自己大概有個結論可是不知道對不對 我想確定的是,多型是為了多個物件重複執行相同動作而誕生的概念 就像例子二,所有樂器都要play所以使用`樂器`的play來呼叫所有樂器的play 所以也就是說,不能選擇只play某部份的樂器, 多型的概念在於,繼承後的物件,都一定要執行此動作囉? 假設,小提琴有繼承〝樂器〞,鼓沒有繼承〝樂器〞,所以要撥放的只有小提琴 相反的如果兩個都有繼承〝樂器〞,當〝樂器〞的play()被執行時,兩個都要撥放囉? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.129.213
legnaleurc:Inherit to Be Reused, Not to Reuse. 10/15 18:42
legnaleurc:個人是覺得你理解的方式有微妙的不同 10/15 18:43
james732:我也覺得原PO有一點誤會 10/15 19:44
conan77420:因為我觀念還不是很強,可否請強者解說一下是哪裡誤解 10/15 20:21
flamerecca:應該是 因為樂器的play很像 總會有一些重複的地方 10/15 23:08
flamerecca:那一些地方就可以定義於class 樂器 裡面吧 10/15 23:08