推 coolcomm:把編譯時期和執行時期做的事搞清楚 04/27 14:54
→ coolcomm:`f` 不一定要指向一個 `Son` 類別的物件 04/27 14:57
請問您的意思是,編譯器是根據宣告來設定IntelliSense的? 雖然這邊參照到子類
但是賦值是執行時期的問題? 所以要正常編譯成功,編譯時期只能選用父類有的方法
執行時期因為真正參照到的物件是子類,所以我們其實是拿編譯時期的父類方法來執行
執行時期的子類參照? 也就是要執行時期讓父類變數可以執行子類方法,必須要在
父類中定義想要執行的子類方法,這樣才能騙過編譯器而讓子類方法留下來?
※ 編輯: Shrugg 來自: 137.132.239.190 (04/27 15:36)
→ cha122977:override? 04/27 15:33
※ 編輯: Shrugg 來自: 137.132.239.190 (04/27 15:47)
→ andymai:都已經明確寫在程式了~還有分執行和編譯時期? 04/27 16:38
→ coolcomm:我指的就是原po修文裡的意思 思考方式不同而已 04/27 18:37
→ Shrugg:我還是不了解您第二句的意思,為什麼f不一定指向Son物件? 04/27 20:12
→ Shrugg:已經是Father f = new Son();為什麼還說不一定指向Son物件 04/27 20:15
→ Shrugg:還是說您用詞太過精簡了,您的意思是編譯時期編譯器不知道f 04/27 20:20
→ Shrugg:還不知道指向何處,所以是不一定? 直到Runtime才確定? 04/27 20:23
→ andymai:編譯時期知道~但寫的時候可能不知道!彈性的程式就是這樣! 04/27 21:55
→ andymai:直接指定當然知道~但是有時候可能不知道~你也不需要知道! 04/27 21:59
→ andymai:就像新訓班長一開始需要知道入伍生叫啥嗎?不需要!反正叫你 04/27 22:00
→ andymai:動起來~就是給我動起來~管你從哪裡來~媽媽嫁給誰... 04/27 22:07
→ andymai:還是很難體會的話~就試著寫程式~用一種定義控制不同的物件 04/27 22:10
推 KanoLoa:現在單純的多型都要講得這麼深澳嗎... 04/29 02:31
推 coolcomm:結果原po發現每個人都給他一個不同的解釋(逃 04/29 20:04
→ andymai:不同?會嗎?不過這種東西沒實際寫過~還蠻難去體會的... 04/29 21:11