/*
在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式:
1.直接通过子类对象访问成员变量:等号左边是谁,则优先用谁,没有则向上找
2.间接通过成员方法访问成员变量:方法属于谁就优先用谁,没有则向上找
*/
定义子类:
public class Zi extends Fu {
int numZi = 20; int num=200; public void methodZi(){ //因为本类中有num,所以优先用本类的num System.out.println(num); } }
定义父类:
public class Fu {
int numFu=10; int num=100; public void methodFu(){ System.out.println(num); //只能用本类中的num,不会找子类 } }
主函数:
Fu fu=new Fu(); //创建一个父类的对象 System.out.println(fu.numFu); //10,父类对象只能使用父类的内容,没有任何子类内容 System.out.println("================"); Zi zi = new Zi(); System.out.println(zi.numZi); //20 System.out.println(zi.numFu); //子类可以继承父类的内容,所以是10 System.out.println("================"); //当子类和父类成员方法重名时: //1.等号左边是谁,就优先用谁 System.out.println(zi.num); //优先子类,200 System.out.println(fu.num); System.out.println("================"); //2.方法属于谁就优先用谁 zi.methodZi(); //方法是子类的,优先用子类的,没有则向上找 zi.methodFu(); //方法是在父类中定义的,输出是的父类的num 来源:51CTO
作者:stronger_mamba
链接:https://blog.csdn.net/stronger_mamba/article/details/100545653