在这样的情况下:
class A{
public int x = 4;
public void s3(){
x = 3;
}
public void f(){
x = 8;
s3();
}
}
class B extends A{
public int x = 5;
public void f(){
x = 10;
s3();
}
}
A a = new B();
B b = (B) a;
a.f();
System.out.println(b.x);
System.out.println(a.x);
a.f()调用f()类的B,然后f()在赋值后调用s3()函数。此时,s3()仅定义在A和 将值 3 分配给 时x,x是类拥有的变量的副本A。为什么s3()不使用x声明的 in B?理论上,B不应该有自己的s3()函数副本继承自A? (所以s3()继承自AinB应该使用x声明的 in B)