Re: [問題] 關於物件導向觀念的問題

看板OOAD作者 (!H45)時間16年前 (2008/03/30 13:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
※ 引述《saladim (殺拉頂)》之銘言: : ※ 引述《awes6380 (明智)》之銘言: : : 一個子類別C裡定義了一個跟父類別S裡名稱一樣的function f() : : 此時有一個物件o定義如下: : : C o=new C(); : : S p=o; : : 此時p.f()和o.f()指的是同一個function,這種觀念稱為? : : A、Encapsulation : : B、Overloading : : C、Inheritance : : D、Polymorphism : : E、以上皆非 : : 不知答案是哪一個呢? : : 另外請教一下,上例中S p=o;是在實做downcast嗎? : 我來猜一下好了 : 1. 父類別f function有加virtual, 且在子類別中定義的f參數也跟父類別中的依樣 : 此時答案應該是polymorphism : 2. 那不管在父類別中有沒有加virtual, 在子類別中f的定義, 參數並沒有跟父類別一樣 : 也就是說, 在父類別中的定義跟子類別中的定義只有名稱依樣 : 此時應該是E, 會造成function hidding(請查閱effective c++)的現象. function hiding 在不同的程式語言會有不同的定義 所以此種效應並非物件導向共通的現象。 回到原題: C 類別繼承自 S 類別 C 類別的 f() 成員方法乃繼承自 S 類別的 f() 成員方法 今天有一個物件叫作 o, 它的實體是由 C 類別不帶參數的建構子產生的 所以應該幫忙題目再定義 C 類別有一個不帶參數的建構子 接著這個 o 物件,被指定給另一個 S 類別的 p 物件 這時候就有趣了,所謂的指定 (那個等號) 是如何定義的 此時會是另一個程式語言的實作議題 不過看得出來最後那個 p 物件在執行期才會決定它的 f() 是什麼功能 所以我說 dynamic binding 絕對不會說錯... (誤) : 以上 不知道對不對 XD : 此外題目好像不是很完整.....S C的關係是? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.172.148
文章代碼(AID): #17xoT4lM (OOAD)
文章代碼(AID): #17xoT4lM (OOAD)