我有这个演示代码:
class Test2 extends Test {
public int number = 0;
@Override
public void set(){
number = 1;
info();
}
@Override
public void info(){
System.out.println(number);
}
}
public class Test {
public Test(){
set();
}
public void set(){
}
public void info(){
}
public static void main(String[] args){
Test2 object = new Test2();
object.info();
}
}
代码给出了这个输出:
1
0
为什么?我期望这个输出:
1
1
在我看来,主函数调用 Test2 类的构造函数来创建对象。构造函数自动调用超类的构造函数。此构造函数调用被覆盖的方法 set()。因此调用了 Test2 类的方法 set()。此方法设置字段并调用写入数字的 info() 方法。然后主函数再次调用创建对象的 info() 方法。
数字字段正确设置为第一行输出为“1”。但是为什么第二行包含 0?似乎根本没有设置该字段。你能解释一下吗?
我应该怎么做才能得到我期望的行为?提前致谢!