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