java對象初始化次序驗證示例。本站提示廣大學習愛好者:(java對象初始化次序驗證示例)文章只能為提供參考,不一定能成為您想要的結果。以下是java對象初始化次序驗證示例正文
public class Derive extends Base
{
private Member m1 = new Member("Member 1");
{
System.out.println("Initial Block()");
}
public Derive() {
System.out.println("Derive()");
}
private Member m2 = new Member("Member 2");
private int i = getInt();
private int getInt()
{
System.out.println("getInt()");
return 2;
}
public static void main(String[] args)
{
new Derive();
}
}
class Base
{
public Base()
{
System.out.println("Base()");
}
}
class Member
{
public Member(String m)
{
System.out.println("Member() "+m);
}
}
/*法式輸入:
Base()
Member() Member 1
Initial Block()
Member() Member 2
getInt()
Derive()
*/
得出結論以下:不斟酌靜態成員的初始化,挪用一個對象的結構函數時,法式先挪用父類的結構函數(可以經由過程super症結字指定父類的結構函數,不然默許挪用無參的結構函數,而且須要在子類的結構函數的第一行挪用),以後靜態成員變量的初始化函數和靜態初始化塊則依照在代碼傍邊的次序履行,成員變量假如沒有指定值的話則付與默許值,即根本數據類型為0或false等,對象則為null;最初挪用本身結構函數。