我无法理解以下输出。Java继承字段
我不知道为什么输出是10,我觉得行A a = new B()
创建B类的新实例,我想结果应该是20
class A {
int i = 10;
}
class B extends A {
int i = 20;
}
public class MainClass {
public static void main(String[] args) {
A a = new B();
System.out.println(a.i);
}
}
为什么这个是这样的..请说明。
你不重写值我在这里,你的影子 –
看看这篇文章。 http://stackoverflow.com/questions/685300/is-there-a-way-to-override-class-variables-in-java –
多态性不适用于字段,它为方法做的方式。你使用了一个'A'类型的变量来查找字段'i',所以你得到'A'类型的副本,而不是类型'B'中的副本。当你查看字段时,重要的是变量的类型,而不是对象的类。 –