Re: [問題] 請問toString的觀念

看板java作者時間19年前 (2006/04/28 10:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串22/25 (看更多)
※ 引述《adrianshum》之銘言: > ※ 引述《pshuang》之銘言: > > 不是 RTTI的話, > > virtual function table 就要依靠 compiler 幫忙建立吧! > > 那 obj.toString() 是 compiler 時期就決定該呼叫哪一個class的method 嗎? > 建議你去看看有關 virtual function table 那些東西的概念吧... > 嘗試用抽象一點的方法說一說 > 當你的 object (叫 A class 吧) 被建立時, 其 vftab 也會被建立. 以上是 compiler 時期建立的。 > 當中有一個entry 是 "toString" 而該 entry 則指著 A 的 toString > 而當一個 Object 的 reference 指著一個實體時, invoke > obj.toString() 時, compiler 並不是把這句譯成 invoke A 的 toString > (因為這是不可能的, 這是 runtime 才能決定的, 不然就沒有了 polymorphism > 的用意了), 而實際的動作, 是去到該 object 的 vftab 中, 找出 "toString" > 的 entry, 然後 invoke 該entry 所指著的 method. 當一個 instance 被宣告並定義時,它的 type 就被決定了, 也代表相關的 virtual function 已經指定到該呼叫的地方(compiler 時即以決定)。 那麼,這該算是由 compiler 做好多型的mapping嗎 ? > 大概的概念是這樣. > Alien -- ┌─────KKCITY─────┐  找歌最方便 KKBOX 歌詞搜尋!! bbs.kkcity.com.tw \^_^ / http://www.kkbox.com.tw └──From:61.30.73.247 ──┘   唱片公司授權,音樂盡情下載 --
文章代碼(AID): #14KNwZ00 (java)
文章代碼(AID): #14KNwZ00 (java)