我學習了很多關於C++如何在存在繼承(多重,虛擬等)的情況下管理其虛擬表以及它如何在內存中放置對象的方法。Java方法表
現在,Java只需要擔心單行繼承,沒有實例方法隱藏等,所以在這種情況下虛擬表應該更簡單一些。我知道Class
文件充當方法區域的「網關」,其中存儲了類型定義,包括方法字節碼I推測。我想到以下兩個問題:
- Java中有沒有任何vtable/method表結構?它如何存儲並鏈接到
Class
對象? - 繼承/動態方法調用如何解決?我的意思是:
具有以下類和實例:B中
class A{ int f(){...} }
class B extends A{ int f(){...} }
A a = new B();
a.f();
F()被調用。 B通過Class
文件解析正確的方法指針?
非常感謝您的意見。
當然。我認爲解決方案在運行時會使用B的'Class'文件並從那裏加載方法,這就是爲什麼B.f()被調用 – Bober02 2012-04-19 10:34:35