[問題] 父變數指到子物件的繼承問題
對不起,又碰到觀念性問題想不通了,所以藉休息思考時間又來這邊尋找溫情.嘻
請問當程式跑到 Father f = new Son()後,從記憶體來看
不是就一個Stack區的變數f指向Heap區的一個Son物件嗎?
如果這時候執行f.show() 為什麼IntelliSense只能選擇父類別裡的show()?
但是如果父類跟子類同時有定義show(),即使選用的是父類的show()
卻是顯示子類show()的內容呢?
從物件來看,父類跟子類會有不同的方法跟成員變數,可以理解是不同的東西
但是變數的目的不是存值就是存參照,變數為什麼會有父跟子的區分呢?
謝謝.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 137.132.239.190
推
04/27 14:54, , 1F
04/27 14:54, 1F
→
04/27 14:57, , 2F
04/27 14:57, 2F
請問您的意思是,編譯器是根據宣告來設定IntelliSense的? 雖然這邊參照到子類
但是賦值是執行時期的問題? 所以要正常編譯成功,編譯時期只能選用父類有的方法
執行時期因為真正參照到的物件是子類,所以我們其實是拿編譯時期的父類方法來執行
執行時期的子類參照? 也就是要執行時期讓父類變數可以執行子類方法,必須要在
父類中定義想要執行的子類方法,這樣才能騙過編譯器而讓子類方法留下來?
※ 編輯: Shrugg 來自: 137.132.239.190 (04/27 15:36)
→
04/27 15:33, , 3F
04/27 15:33, 3F
※ 編輯: Shrugg 來自: 137.132.239.190 (04/27 15:47)
→
04/27 16:38, , 4F
04/27 16:38, 4F
→
04/27 18:37, , 5F
04/27 18:37, 5F
→
04/27 20:12, , 6F
04/27 20:12, 6F
→
04/27 20:15, , 7F
04/27 20:15, 7F
→
04/27 20:20, , 8F
04/27 20:20, 8F
→
04/27 20:23, , 9F
04/27 20:23, 9F
→
04/27 21:55, , 10F
04/27 21:55, 10F
→
04/27 21:59, , 11F
04/27 21:59, 11F
→
04/27 22:00, , 12F
04/27 22:00, 12F
→
04/27 22:07, , 13F
04/27 22:07, 13F
→
04/27 22:10, , 14F
04/27 22:10, 14F
推
04/29 02:31, , 15F
04/29 02:31, 15F
推
04/29 20:04, , 16F
04/29 20:04, 16F
→
04/29 21:11, , 17F
04/29 21:11, 17F
討論串 (同標題文章)