继承中代码的执行顺序

package cn.taylor.demo;
public class Demo {
class Super{
int flag=1;
Super(){
test();
}

void test(){
System.out.println("Super.test()flag="+flag);
}
}
class Sub extends Super{
Sub(int i){
flag=i;
System.out.println("Sub.Sub()flag="+flag);
}

void test(){
System.out.println("Sub.test()flag="+flag);
}
}
public static void main(String[] arg){
new Demo().new Sub(5);
}

}

创建子类对象之前会先隐性地调用父类的无参构造函数,然后再是调用子类的相应的构造函数。

所以运行结果是:

Sub.test()flag=1
Sub.Sub()flag=5

原文地址:https://www.cnblogs.com/itaylor/p/7792667.html