前言:
最近重投簡歷,一家公司的筆試題,就是子類繼承父類,初始化順序以及方法的調用順序,很遺憾,我做錯了。所以,記錄在這裏,希望以後不要再錯。
程序:
// 父類
public class ParentA {
static { System.out.println("static A"); }
{ System.out.println("I'm A class"); }
public ParentA() {
System.out.println("HelloA");
}
public void function() {
System.out.println("A function");
}
}
// 子類
public class SubClassB extends ParentA {
static { System.out.println("static B"); }
{ System.out.println("I'm B class"); }
public SubClassB() {
System.out.println("HelloB");
}
public void function() {
System.out.println("B function");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new SubClassB().function();
}
}
輸出結果:
static A
static B
I'm A class
HelloA
I'm B class
HelloB
B function
結論:
父類靜態代碼塊——子類靜態代碼塊——父類普通方法——父類構造方法——子類普通方法——子類構造方法