在网上搜索后,我还没有找到关于实例变量在 Java 内存模型中的确切位置的良好而全面的答案。例如,我们有这段代码(带有变量的阴影声明):
class A {
int var = 1;
void m() {
System.out.println("\'m()\' is called from class A");
}
}
class B extends A {
int var = 5;
void m() {
System.out.println("\'m()\' is called from class B");
}
}
public class Class1 {
public static void main(String args[]) {
A aref = new B();
aref.m();
String s = (aref.var)==1?"A":"B";
System.out.println("\'var\' is called from class " + s);
}
}
这段代码的输出是:
'm()' is called from class B
'var' is called from class A
现在的问题不是继承在 Java 中是如何工作的,而是这个实例变量驻留在 Java 内存模型中的什么位置?请论证你的答案。
谢谢