即使变量已被覆盖,为什么在以下情况下输出不同?
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();
}
}
不存在覆盖变量之类的东西。B
实际上有two实例变量命名为a
:它声明一个,继承另一个。看看这个:
B ob = new B();
System.out.println("B.a is " + ob.a);
System.out.println("A.a is " + ((A)ob).a);
里面一个B
您可以编写的实例方法super.a
or ((A)this).a
访问父级的变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)