class A{
String foo="bar";
void m(){
}
}
class B extends A{
//String foo="xyz";
void m(){
foo="xyz";
System.out.println(foo);
System.out.println(super.foo);
}
}
public class Dell{
public static void main(String[] args)
{
A a=new B();
System.out.println(a.foo);
a.m();
}
}
这是超类(A)和子类(B)之间共享的foo变量。当我在m()方法中调用super.foo时为什么它不会调用A类foo变量值为bar.It似乎是foo两个类之间共享。这怎么可能?当我们使用foo变量声明A时,它有自己的副本,现在当我们覆盖它并改变子类中的foo值时,它是如何反映在Super类中的?请妥善解释我们的概念
答案 0 :(得分:0)
这基本上是你需要了解的关于超类和子类中的实例变量范围。
http://www.xyzws.com/javafaq/what-is-variable-hiding-and-shadowing/15