class A { int a = 100; void f() { System.out.println(a); } } class B extends A { int a = 9999; void f() { System.out.println(a); System.out.println(this.a); System.out.println(super.a); } } public class TestClient { private static Context context; public static void main(String[] args) { A a = new B(); System.out.println(a.a); a.f(); System.out.println("======================"); B b = new B(); b.f(); System.out.println("======================="); ((A) a).f(); } }
100 9999 9999 100 ====================== 9999 9999 100 ======================= 9999 9999 100
总结:子类覆盖父类的方法时,直接调用成员变量,其实是:this.成员变量。(应该是编译器自己加上的吧?)
如果要调用父类的变量,就得super.成员变量。