public class NotActuallyImmutable {
private final int x;
public NotActuallyImmutable(int x) {
this.x = x;// line 1
}
public int getX() {
return x;
}
}
public class Mutable extends NotActuallyImmutable {
private int x = 123;
public Mutable(int x) {
super(x);
}
public int getX() {
return x++;
}
}
现在在我的主班
NotActuallyImmutable n = new Mutable(42); // line2
int x = n.getX();
System.out.println("x is"+x);
我期待输出为 42,但它返回输出为 123。我期待 42,因为在第 2 行我正在制作 Mutable 类的对象,然后在第 1 行我将值设置为 42。所以当我这样做时n.getX()
我应该得到这个最新值不是默认值 123。我知道我错过了一些东西,但无法弄清楚它背后的逻辑?