Java 對象的實例化過程
時間 2021-08-15
標籤
Java
java
對象的實例化就是加載類、開闢空間、初始化屬性、執行構造函數的過程。
一. 簡單類對象的實例化過程
- 加載 class 類(方法區)
- 在棧中申請控件,聲明變量,準備存放對象的引用(棧)
- 在堆中開闢空間,分配地址,存放對象(堆)
- 並在空間中,對對象中的屬性進行默認初始化,然後進行顯示初始化(堆)
- 構造函數方法進棧,進行初始化(棧)
- 初始化完成後,將堆內存中的地址(3中的地址)賦值給引用變量(2中),構造方法出棧
如下圖:
二、子類對象的實例化過程
- 加載 class 類,loadClass(方法區)
- 在棧中聲明變量,準備存放對象的地址(棧)
- 在堆中開闢空間,分配地址,作爲子類對象的地址(堆)
- 對對象中的屬性(包括父類的屬性)進行默認初始化(堆)
- 子類構造方法進棧(棧)
- 父類屬性顯式初始化(堆)
- 父類構造函數進棧,執行完畢出棧(棧)
- 顯式初始化子類屬性(堆)
- 初始化完畢後,將堆內存中的地址賦給引用變量。子類構造方法出棧。
如下圖: