java方法呼叫記憶體相關

2021-09-01 08:45:05 字數 679 閱讀 7839

public class test2 

}class father

public void doget()

}class child extends father

public void doget()

}

結果是:

child service

parent service

child doget

比較難以理解的是呼叫super.service(),結果卻是

parent service

child doget

也就是說:

public void service()

public void doget()

這段**中呼叫的doget()是子類的doget方法。

原因:我們方法呼叫的時候,會預設將this關鍵字傳入進去(隱式傳this),而father f = new child()這段**,是乙個父類引用指向子類物件。它會呼叫child的方法。而隱式傳的this就是child的this。

所以當呼叫doget()方法時,其實就相當於this.doget()。(我們直接加上this,結果也是正確的)。

也就是child 的doget方法。

JAVA記憶體相關基礎

jvm 記憶體劃分 暫存器 記憶體和 cpu 之間佔的記憶體 本地方法棧 jvm 呼叫了系統的功能 如 呼叫系統的複製貼上 方法 資料共享區 執行時 class 檔案進入的地方 方法棧 執行時所有方法進入的記憶體 堆 儲存的是容器 如 陣列 和物件 陣列建立過程 壓棧執行 好比上子彈,方法先進入方法...

JAVA 物件建立,方法呼叫的記憶體分析

先放一張截圖 從main方法開始執行整個記憶體分析情況如下 1 main方法在棧去分配記憶體空間。程式執行時,方法沒有被呼叫前,方法是沒有記憶體空間的,只有方法在被呼叫時,才會進行壓棧動作,在棧去分配記憶體空間。2 程式開始執行person p1 new person 建立person物件,main...

java呼叫ocx方法

一 註冊.ocx控制項,在命令視窗執行 regsvr32.exe ocx,二 取得控制項的classid,開始 執行 輸 regedit,開啟登錄檔 在登錄檔的工具欄的編輯中找到搜尋按鈕,輸入 ocx的名字 查詢,就可以得到控制項的classid,即工程1.usercontrol1 三 ole呼叫的...