1 public class Test { 2 class Super { 3 int flag = 1; 4 5 Super() { 6 test(); 7 } 8 9 void test() { 10 System.out.println("Super.test() flag=" + flag); 11 } 12 } 13 14 class Sub extends Super { 15 Sub(int i) { 16 flag = i; 17 System.out.println("Sub.Sub()flag=" + flag); 18 } 19 20 void test() { 21 System.out.println("Sub.test()flag=" + flag); 22 } 23 } 24 25 public static void main(String[] args) { 26 new Test().new Sub(5); 27 } 28 }
先将父类的flag变量进行初始化,初始化为1,然后调用父类的构造方法,然后父类的构造方法中有test()方法,注意这里调用的子类的test()方法,此时flag = 1;
父类的构造方法调用完毕,然后调用子类的构造方法,此时flag变量已经变成了5,所以打印结果为:
Sub.test()flag=1
Sub.Sub()flag=5
转载于:https://www.cnblogs.com/motong/p/10054615.html