在此代码中,我分配了一个唯一的对象,但是以某种方式,我存储了x的2个副本(一个用于基类,一个用于子类)。如果对象只有一个,怎么可能?找到两个x var的空间在哪里?这是否意味着实际上创建了两个对象?
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());
}
}
最佳答案
一个x
属于超类,另一个属于子类。它们具有相同的名称并不重要,您可以通过使用类限定访问表达式来访问两者:
((Base)b).x
((Subclass)b).x
(请注意,第一行的强制转换是不必要的;出于对称性考虑,我将其放入)
关于java - 存储两个具有相同名称的变量的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18032103/