Java 對象的實例化過程

對象的實例化就是加載類、開闢空間、初始化屬性、執行構造函數的過程。

一. 簡單類對象的實例化過程

  1. 加載 class 類(方法區)
  2. 在棧中申請控件,聲明變量,準備存放對象的引用(棧)
  3. 在堆中開闢空間,分配地址,存放對象(堆)
  4. 並在空間中,對對象中的屬性進行默認初始化,然後進行顯示初始化(堆)
  5. 構造函數方法進棧,進行初始化(棧)
  6. 初始化完成後,將堆內存中的地址(3中的地址)賦值給引用變量(2中),構造方法出棧

如下圖:

在這裏插入圖片描述

二、子類對象的實例化過程

  1. 加載 class 類,loadClass(方法區)
  2. 在棧中聲明變量,準備存放對象的地址(棧)
  3. 在堆中開闢空間,分配地址,作爲子類對象的地址(堆)
  4. 對對象中的屬性(包括父類的屬性)進行默認初始化(堆)
  5. 子類構造方法進棧(棧)
  6. 父類屬性顯式初始化(堆)
  7. 父類構造函數進棧,執行完畢出棧(棧)
  8. 顯式初始化子類屬性(堆)
  9. 初始化完畢後,將堆內存中的地址賦給引用變量。子類構造方法出棧。

如下圖:
在這裏插入圖片描述