初始化順序

2021-06-26 11:45:08 字數 667 閱讀 3704

上次面試碰到一面試題,雖然知道但是感覺還是有必要記錄下來,利己利民,題目是關於初始化順序的,也許對很多初學者還是有點用處的。閒話不多說,先上**.

package initialseq;

public class parent

public parent()

public int method()

}

package initialseq;

public class child extends parent

public child()

public static void main(string args)

}

輸出結果:

初始化順序:父類靜態變數->父類靜態快->子類靜態變數->子類靜態塊->父類程式塊->父類建構函式->子類程式塊->子類建構函式。

當我們new子類物件的時候會想載入父類和子類,這時父類和子類靜態變數及靜態塊被初始化,後面接著的順序父類程式塊,父類建構函式子類程式塊,子類夠著函式,相信大家應該都好理。由於第二次再new子類物件的時候,父類和子類已經被載入過了,所以就不會重複載入,即不會重複初始化靜態變數及靜態塊,所以在第二次new child的時候沒有靜態塊的內容輸出,並且父類的i的值沒有被初始化為10。

初始化順序

在類的內部,變數定義的順序決定了初始化的順序.即使變數定義散布於方法定義之間,它們仍會在任何方法呼叫之前得到初始化.無論建立多少個物件,靜態資料只占用乙份儲存區域.靜態變數初始化只有在必要時才會執行,比如有類table,如果不建立table物件也不引用table的靜態方法,那麼類table的靜態變數...

初始化順序

初始化,記憶體模型,成員變數,靜態變數,區域性變數,方法 初始化順序,靜態變數 按照類中定義的順序,先父後子 成員變數 按照類中定義的順序 建構函式 其他方法。建立物件時構造器的呼叫順序是 先初始化靜態成員 先父後子 初始化父類成員變數,然後呼叫父類構造器,再初始化自己成員變數,最後呼叫自身構造器。...

關於初始化及初始化順序

首先,類的成員變數會被自動初始化,並且會在構造器被呼叫前發生,如下 public class testinitialization public static void main string args 如下 主類 public class staticinitialization 呼叫main之前...