Java继承中成员变量的访问原则
只有成员方法有多态的概念,成员变量没有多态的概念。
两种访问形式:
- 直接访问:等号左边是谁就用谁的成员变量,没有则向上找
- 间接通过成员方法访问:用了谁的方法,就在谁中找,没有则向上找
下面通过样例来展示:
public class Fu {
int num = 1;
int numFu = 2;
void fuMethod() {
System.out.println(num);
}
public class Zi extends Fu {
int num = 3;
int numZi = 4;
void ziMethod() {
System.out.println(num);
}
void ziMethod2() {
System.out.println(numFu);
}
public static void main(String[] args) {
Fu obj = new Zi();
System.out.println(obj.num);// 1 等号左边是谁就用谁的成员变量
System.out.println(obj.numFu);// 2 等号左边是谁就用谁的成员变量
obj.fuMethod();// 1 用了谁的方法,就在谁中找
Zi obj2 = new Zi();
System.out.println(obj2.num);// 3 等号左边是谁就用谁的成员变量
System.out.println(obj2.numFu);// 2 等号左边是谁就用谁的成员变量,没有则向上找
obj2.ziMethod();// 3 用了谁的方法,就在谁中找
obj2.ziMethod2();// 2 用了谁的方法,就在谁中找,没有则向上找
obj2.fuMethod();// 1 用了谁的方法,就在谁中找,没有则向上找
}
}