先看段代码:
public class Static_Super_Conustruct {
static class Base{
{
System.out.println("Base匿名构造方法");
}
public Base() {
System.out.println("Base()构造方法");
}
static{
System.out.println("Base static{}静态块");
}
}
static class Sub extends Base{
{
System.out.println("Sub 匿名构造方法");
}
public Sub() {
System.out.println("Sub()构造方法");
}
static{
System.out.println("Sub static{}静态块");
}
}
/**
* @param args
*/
public static void main(String[] args) {
new Sub();
}
// 输出结果:
// Base static{}静态块
// Sub static{}静态块
// Base匿名构造方法
// Base()构造方法
// Sub 匿名构造方法
// Sub()构造方法
}
1.静态块,在JVM第一次加载类的时候,就会执行静态块中的代码。
2,匿名构造方法在所有构造方法前执行。
3.先执行父类构造方法再执行子类构造方法。
根据以上三点并可得出上面的结果。