Java 對象初始化

 

對象A的建立過程:編程

1. 構造器其實是靜態方法。當首次建立對象A 或者 A類的靜態方法/靜態域首次被訪問時,Java解釋器查找類路徑,以定位安全

    A.class文件。(當程序建立第一個對類的靜態成員的應引用時,類會被動態加載到JVM中)對象

2. 載入A.class,有關靜態初始化的全部動做都會執行。所以,靜態初始化只在Class對象首次加載的時候進行一次。編譯器

3. 當用new A()建立對象時,首先在堆上爲A對象分配足夠的存儲空間。編譯

4. 這個存儲空間會被清零,這樣就自動將A對象的全部基本類型數據設置成了默認值,引用則被設置成了null。class

5. 執行全部出現於字段定義處的初始化工做。引用

6. 執行構造器。程序

 

屬性、方法、構造方法和自由塊都是類中的成員,在建立類的對象時,類中各成員的執行順序:方法

1. 父類靜態成員和靜態初始化快,按代碼出現的順序依次執行。
2. 子類靜態成員和靜態初始化塊,按代碼出現的順序依次執行。
3. 父類的實例成員和實例初始化塊,按代碼出現的順序依次執行。
4. 父類的構造方法(若是沒有明確指出調用某個父類的構造器,就會默認調用父類默認構造器,若是不存在默認構造器,編譯器會出數據

     錯)
5. 子類實例成員和實例初始化塊,按代碼出現的順序依次執行。
6. 子類的構造方法。

 

 

編寫構造器的一條有效準則:(Java編程思想第四版中文P163)

「用盡量簡單的方法使對象進入正常狀態,若是能夠的話,避免調用其餘方法」,在構造器內惟一可以安全調用的哪些方法是基類中的final方法。

相關文章
相關標籤/搜索