【发布时间】:2015-11-27 19:52:47
【问题描述】:
为什么即使变量已被覆盖,在以下情况下输出也会不同?
public class A {
int a = 500;
void get() {
System.out.println("a is " + this.a);
}
}
public class B extends A {
int a = 144;
}
public class mainmethod {
public static void main(String args[]) {
B ob = new B();
System.out.println("a is " + ob.a);
ob.get();
}
}
【问题讨论】:
-
它被称为“字段隐藏”或“阴影”。查看更多问题(和答案):stackoverflow.com/search?q=java+field+hidingstackoverflow.com/search?q=java+field+shadowing
-
感谢您的回复!
-
你需要记住一个简单的规则:“字段不是多态的”。多态性(后期/动态绑定)仅适用于非静态/最终/私有的方法。
标签: java field shadowing member-hiding