必考题:子类继承父类,初始化以及方法调用顺序
前言:
最近重投简历,一家公司的笔试题,就是子类继承父类,初始化顺序以及方法的调用顺序,很遗憾,我做错了。所以,记录在这里,希望以后不要再错。
程序:
// 父类
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
结论:
父类静态代码块——子类静态代码块——父类普通方法——父类构造方法——子类普通方法——子类构造方法