子类覆盖父类的成员变量

时间:2021-11-15 19:28:48
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.成员变量。