package com.kenwublog.tmp; public class A extends B { public int a = 100; public A() { super(); System.out.println(a); a = 200; } public static void main(String[] args) { System.out.println(new A().a); } } class B { public B() { System.out.println(((A) this).a); } }
不要运行这段代码 你觉得结果是什么?答对有分~,偷着运行的木有小JJ
不要运行这段代码 你觉得结果是什么?答对有分~,偷着运行的木有小JJ
100
200先执行了super();去到了B的构造函数,但是在B的构造函数里面由于B实例根本没有a变量,就算你强转过去,得到的a值 肯定为0(默认值) 再执行 System.out.println(a); 这个时候打印的是A中的成员变量a 100然后再将a = 200; 所以打印出来的应该是200
100
200
不解释 debug全知道了
我吧 我的不小
构造函数在web开发中 已经很少用了 不过SWING开发 有很多是必须在构造时传参的