继承中代码的执行顺序
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