このコードでは、オブジェクトを 1 つだけ割り当てますが、何らかの方法で x のコピーを 2 つ (基本クラス用に 1 つとサブクラス用に 1 つ) 格納します。オブジェクトが1つしかない場合、どのように可能ですか? 2 つの x 変数を格納するスペースはどこにありますか? 実際には2つのオブジェクトが作成されるということですか?
class App {
class Base {
public int x;
public Base() {
x = 2;
}
int method() {
return x;
}
}
class Subclass extends Base {
public int x;
public Subclass() {
x = 3;
}
int method() {
return x;
}
}
public static void main(String[] args) {
new App().run();
}
public void run() {
Base b = new Subclass();
System.out.println(b.x);
System.out.println(b.method());
}
}