Java变量根据类型而不是对象

时间:2015-09-02 16:48:57

标签: java types casting

我有以下代码:http://ideone.com/Ww5bd8

class A {
     public int n = 1;
     public int get() { return n; }
}
 class B extends A {
     public int n = 2;
     public int get() { return n; }
}
class javaprog {
  public static void main(String args[]) {
    B b = new B();
    A a = b;
    System.out.println("a = b");
    System.out.println(a.get());
    System.out.println(a.n);
    System.out.println(b.n);
  }
}

这导致输出:

a = b
2
1
2

没有创建A,所以第2行如何分配1到n执行过。当然,由于对象引用,a和b是相同的实例,因此在内存中,a.n如何引用与b.n不同的位置?

如果n是静态的,我可以理解这一点,但它是一个实例变量。

0 个答案:

没有答案