初始化的例項

2021-08-30 21:25:41 字數 1065 閱讀 1389

說明:包含main()方法的類中包含有static類,static類先初始化

class bowl1

void f1(int marker)

}class table1

void f2(int marker)

static bowl1 bowl2 = new bowl1(2);

}class cupboard1

void f3(int marker)

static bowl1 bowl5 = new bowl1(5);

}public class staticinitialzation

static table1 table = new table1();

static cupboard1 cupboard = new cupboard1();

}

結果:bowl(1)

bowl(2)

table1()

f1(1)

bowl(4)

bowl(5)

bowl(3)

cupboard1()

f1(2)

creating new cupboard1() in main

bowl(3)

cupboard1()

f1(2)

creating new cupboard1() in main

bowl(3)

cupboard1()

f1(2)

f2(1)

f3(1)

class b1

}class a1

a1()

}public class staticinitialzation

}

靜態初始化只有在必要時刻才會進行(不是說會自動初始化所有類中的靜態變數或者靜態塊):

1.當第一引用類中的static變數時,所有的static變數和static塊都會被初始化,類本身不會初始化(a1沒有初始化)

2.建立類(b1)

靜態初始化和例項初始化

父類單獨的效果 當父類單獨執行時,靜態初始化塊優先執行,然後是例項初始化塊,最後才是構造器 子類單獨效果 首先執行父類的靜態初始化塊和子類的初始化塊 優先執行靜態 然後執行父類的例項初始化塊和構造器,最後執行子類的例項初始化塊和構造器 父類子類效果1 父在前子在後 先將父類的物件例項出來後,進行子類...

類初始化和例項初始化

乙個類要建立例項需要先載入並初始化該類 main方法所在的類需要先載入和初始化 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行clinit 方法 clinit 方法由靜態類變數顯式賦值 和靜態 塊組成 類變數顯式賦值 和靜態 塊 從上到下順序執行 clinit 方法只執行一次 父類的初始化 ...

類初始化和例項初始化

father public class father father public inttest public static intmethod son public class sonextends father son public inttest public static intmethod...