Web で検索した後、インスタンス変数が 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 メモリ モデルのどこにこのインスタンス変数が存在するかということです。あなたの答えを主張してください。
ありがとう