注:父類及子類的靜態成員和靜態**塊
只在程式執行時載入一次
(類載入過程的初始化那,進行靜態變數的賦值)。
輔助類member:
public class member
}
父類parent:
public class parent
public parent()
}
子類subclass:
public class subclass extends parent
public subclass()
}
測試類:}
執行結果:
這是member的構造方法,呼叫者是: parent的靜態成員
parent的靜態**塊
這是member的構造方法,呼叫者是: subclass的靜態成員
sbuclass的靜態**塊
這是member的構造方法,呼叫者是: parent的非靜態成員
parent的非靜態**塊
parent的構造方法
這是member的構造方法,呼叫者是: subclass的非靜態成員
sbuclass非靜態碼塊
subclass的無引數構造方法
這是member的構造方法,呼叫者是: parent的非靜態成員
parent的非靜態**塊
parent的構造方法
這是member的構造方法,呼叫者是: subclass的非靜態成員
sbuclass非靜態碼塊
subclass的無引數構造方法
public class topic
}class a
public a()
}class b extends a
public b()
}
執行結果:
1 a 2 b 2 b
結果分析:
public class z extends x
public static void main(string args)
}class x
}class y
}
執行結果:
y x y z
java物件初始化過程
假設有一下類 class test test int n 0 我們知道,任何物件在使用前都會被初始化,方法裡面的區域性變數必須給初始化值才能通過編譯。現在我們來討論一下初始化的過程 對於字段 變數 而言,如果是基本型別,那麼即使不給初始值,都會得到jvm預設的初始值 boolean預設是false,...
Java物件的初始化過程
person p new person zhangsan 20 執行該語句時虛擬機器做了什麼事情?1.因為new用到了person.class檔案,所以會先找到該檔案載入到記憶體中 2 執行該類中的static 塊 如果有的話 給person.class類進行初始化 3 在堆記憶體中開闢空間,分配記...
Java 初始化過程
初始化過程 載入器啟動並且找出匯出類derived的編譯 即名為derived.class的檔案之中 在對它載入的過程中,編譯器注意到它有乙個基類,於是繼續進行基類的載入 基類中的static變數初始化,然後是匯出類的static 如果乙個成員被宣告為 static,它就能夠在它的類的任何物件建立之...