实例变量是否在java中的超类和子类之间共享

时间:2016-03-14 18:29:06

标签: java

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类中的?请妥善解释我们的概念

1 个答案:

答案 0 :(得分:0)

这基本上是你需要了解的关于超类和子类中的实例变量范围。

http://www.xyzws.com/javafaq/what-is-variable-hiding-and-shadowing/15