java中采用oop-klass二分模型表示壹個對象。klass保存著類的數據,在其中保存著方法表,方法表中保存著從父類繼承下來的和自己定義的所有方法,如果子類重寫父類方法,那麽在這個方法表中相同位置上的父類方法則會被覆蓋。實際調用的也就是子類的方法,找不到父類方法。
所以妳可以這麽理解, 通過printPerson去找Info的位置是壹樣的,但是重寫後,被子類的方法替換了,所以執行的代碼就不壹樣了。
參考資料:
但實際上,妳要求的jvm過程,是很復雜的。通過壹段文字想要解釋清楚是不可能的, 直接上概念妳也理解不了。
所以上面的模型解釋不了所有的情況。
如果妳想確切知道,還是需要學很多東西的,可以先了解壹下:對象內存分配, 類加載過程,解析調用,靜態/動態分派,妳可以看看《深入理解java虛擬機》。