class A {
static {
System.out.println("loading A static 1");
}
static {
System.out.println("loading A static 2 B.c= "+B.c);
}
static {
System.out.println("loading static 3");
}
static int a=10;
A(){
}
}
class B extends A{
static {
System.out.println("loading B A.a= "+A.a);
}
static int c = 50;
}
public class Test {
public static void main(String[] args) {
new B();
}
}
輸出:
loading A static 1
loading A static 2 B.c= 0
loading static 3
loading B A.a= 10
從這出去放我們可以說,子類,但孩子下課後父類加載後初始化父母班? 如果是的話JVM如何加載類層次結構?
那麼爲什麼在輸出的第二行給出B.c = 0如果B類未加載如何B.c = 0來了?謝謝你 –
在這一點上,這兩個類都加載,你可以從輸出中看到。 'B.c'尚未初始化,所以它仍然是'0'。我認爲輸出顯示的東西的順序非常清楚。 – Keppil
哦,明白了:)謝謝,能否告訴我JVM如何知道類的層次結構? –