我正在准备考试,我正在查看一个示例程序,我很困惑。这是代码:
public class Problem1 {
public static void f(A X)
{
A Y = X;
Y.key = X.key + 1;
}
public static void f(B X)
{
B Y = new B();
Y.key = X.key + 2; //Y.key = 12
X = Y; //X points to Y?
}
public static void main(String[] args)
{
A P = new A();
P.key = 3;
B Q = new B();
Q.key = 10;
f(P);
System.out.println(P.key);
f(Q);
System.out.println(Q.key);
P = Q;
f(P);
System.out.println(P.key);
}
}
class A
{
public int key;
}
class B extends A
{
}
我对 f(P) 很好。我的问题是 f(Q)。我知道创建了一个名为 Y 的新 B,它的密钥是 12。我的问题是,X = Y 不应该将 X 指向 Y 吗?使 Q 的键值变为 12 而不是 10?代码打印出 4,10,11。我很困惑为什么它打印 10 而不是 12。