在父子类的继承关系当中,如果成员变量重名,则创建子类对象时,
访问有两种方式:
1.直接通过子类对象访问成员变量;
(等号左边是谁,就优先用谁,没有则向上找)
2.间接通过成员方法访问成员变量;
调用成员方法时该方法且属于谁,则优先用谁,没有再向上找。
例如:
package 类和对象;
import java.util.Arrays;
public class Democ06 {
public static void main(String[] args) {
Fu fu = new Fu(); // 创建父类对象
System.out.println(fu.numFu);//只能使用父类的东西,没有任何子类内容。
System.out.println("================");
Zi zi = new Zi();
System.out.println(zi.numFu); // 10
System.out.println(zi.numZi); // 20
System.out.println("==================");
System.out.println(zi.num); //等号左边是new子类,所以用子类。200
System.out.println("==================");
// 这个方法是子类的,优先用子类的,没有再向上找。
zi.methodZi(); // 200
zi.methodFu(); // 100
}
}
package 类和对象;
public class Fu {
int numFu = 10;
int num = 100;
public void methodFu(){
// 使用的是本类当中的,不会向下找子类。
System.out.println(num);
}
}
package 类和对象;
public class Zi extends Fu{
int numZi = 20;
int num = 200;
public void methodZi(){
// 因为本类当中有num,所以这里用的是本类的num
System.out.println(num);
}
}
运行结果: