我是 Java 的初学者,正在努力理解变量初始化的以下问题,希望得到专家的帮助。
给定考试的代码:
public class SimpleCalc {
public int value;
public void calculate() { value += 7; }
}
和
public class MultiCalc extends SimpleCalc {
public void calculate() { value -= 3; }
public void calculate(int multiplier) {
calculate();
super.calculate();
value *= multiplier;
}
public static void main (String[] args) {
MultiCalc calculator = new MultiCalc ();
calculator.calculate(2);
System.out.println(calculator.value);
}
}
我的理解是,这需要引发运行时异常,因为变量“值”永远不会获得分配给它的实际初步值(公共 int 值;)。但是,代码的工作和行为就像变量“value”被分配了 0(与 public int value=0; 相同)。有人可以解释一下为什么会这样吗?非常感谢