Re: [問題] 關於物件導向觀念的問題
※ 引述《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
討論串 (同標題文章)
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30