A類:測試
public class A {
static int i=9;
static {
i++;
System.out.println("A的靜態類型"+i);
}
{
i++;
System.out.println("A的非靜態"+i);
}
public A(){
i++;
System.out.println("A的無參構造方法"+i);
}
public A(String Astr){
System.out.println("A的有參構造方法");
}
}繼承
繼承A的B類:class
public class B extends A{變量
static int i=9;
static {
i++;
System.out.println("B的靜態類型"+i);
}
{
i++;
System.out.println("B的非靜態"+i);
}
public B(){
i++;
System.out.println("B的無參構造方法"+i);
}
public B(String Bstr){
System.out.println("B的有參構造方法");
}
}方法
測試代碼:static
new B();
System.out.println(B.i);
System.out.println(A.i);new
測試結果:
A的靜態類型10
B的靜態類型10
A的非靜態11
A的無參構造方法12
B的非靜態11
B的無參構造方法12
12
12
類的執行順序
單類:
1) 執行static的代碼塊和static的成員變量
2) 執行非static的代碼塊和非static的成員變量
3)執行構造方法
父子類:
1) 執行父類的static的代碼塊和static的成員變量
2) 執行子類的static的代碼塊和static的成員變量
3) 執行父類非static的代碼塊和非static的成員變量
4)執行父類的構造方法
5) 執行子類非static的代碼塊和非static的成員變量
6)執行子類的構造方法
靜態塊:用static聲明,Jvm加載類時執行並只執行一次;