JAVA類與物件的初始化

2021-06-28 14:56:08 字數 1414 閱讀 9184

請看乙個例子:

public class test2} 

class superinitfield

static

} class subinitfield extends superinitfield

static

}

該例子的結果為

static parent

parent

static child

parent

child

擱開原因(請參考鏈結解釋如下:

首先例項化乙個父類物件。這裡會先執行父類的static初始塊,接著呼叫父類的建構函式。

superinitfield p = new superinitfield();

然後例項化乙個子類物件,並賦給父類引用。因為父類的static塊只會執行一次,所以先執行子類的static初始塊,然後呼叫父類的建構函式,再呼叫子類的建構函式。

superinitfield c = new subinitfield();

初始化的順序為:父類static塊和static屬性》子類static塊和static屬性》父類初始化塊和非static屬性》父類建構函式》子類初始化塊和非static屬性》子類建構函式。

習題一,請寫出執行的結果。

class a

public a()

private static int k = getint();

public static int getint()

static

public void m() }

class b extends a

public b()

public void m() }

public class test1

}

習題二,請寫出結果。

public class test 

public static int getint()

public static void main(string args)

}

習題三,請寫出結果。

class parent 

// 初始化塊

// 構造器

public parent() }

public class subclass extends parent

// 初始化塊

// 構造器

public subclass()

// 程式入口

public static void main(string args)

}

java 類物件的初始化

類物件的初始化 1.static成員變數的初始化 2.static塊的初始化 與實際在 中的位置有關 3.例項成員變數的初始化 4.例項塊的初始化 與實際在 中的位置有關 5.建構函式 建構函式 可以過載 無返回值 如果你沒有寫建構函式,系統會給出缺省建構函式,如果已經寫了,則呼叫建構函式不符時會出...

java類物件的初始化順序

類物件的初始化順序 1.static成員變數預設初始化 2.static塊初始化 3.例項成員變數預設初始化 4.例項塊初始化 5.建構函式 或1.static塊初始化 2.static成員變數預設初始化 3.例項塊初始化 4.例項成員變數預設初始化 5.建構函式 測試 class date dat...

Java 物件構造與初始化

如果沒有this及super,則編譯器自動加上super 即呼叫直接父類不帶引數的構造方法。任何子類必須先或顯示或隱式地呼叫直接父類的構造方法。class constructcallthisandsuper class person person string name,int age class ...