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


相关文章:

  • 2021-06-10
  • 2021-08-13
  • 2021-05-30
  • 2021-12-20
  • 2022-12-23
  • 2022-12-23
  • 2021-09-14
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-08
  • 2022-01-09
  • 2021-10-30
  • 2022-12-23
  • 2021-12-21
  • 2021-10-25
相关资源
相似解决方案