继承中成员变量的访问特点和区分子类方法中重名的三种变量
继承中成员变量的访问特点
在父类子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方式:
直接通过子类对象访问成员变量:
等号左边是谁,就优先用谁,没有则向上找。
间接通过成员方法访问成员变量:
该方法属于谁,就优先用谁,没有则向上找。
案例:
父类:
public class Fu {
    int numFu =10;
    int num =100;
   public void methodFu(){
       //使用的是本类当中的,不会向下找子类
       System.out.println(num);
   }
}
子类:
public class Zi extends Fu{
    int numZi =20;
    int num =200;
    public void methodZi(){
        System.out.println(num);
    }
}  
测试类:
public static void main(String[] args) {
    //创建父类对象
    Fu fu = new Fu();
    //只能使用父类的东西,没有任何子类的内容
    System.out.println(fu.numFu);
    //创建子类对象
    Zi zi = new Zi();
    System.out.println(zi.numZi);//20
    System.out.println(zi.numFu);//10
    //等号左边是谁就优先用谁(优先用子类)
    System.out.println(zi.num);//200
    zi.methodZi();//200
    zi.methodFu();//100
}
区分子类方法中重名的三种变量
局部变量: 直接写成员变量名
本类的成员变量: this.成员变量名
父类的成员变量: super.成员变量名
案例:
父类:
public class Fu {
    int num =10;
}
子类:
public class Zi extends Fu{
    int num =20;
    public void method(){
        int num =100;
        System.out.println(num);//100 局部变量
        System.out.println(this.num);//20 本类的成员变量
        System.out.println(super.num);//10 父类的成员变量
    }
}
测试类:
public static void main(String[] args) {
    Zi zi = new Zi();
    zi.method();
}
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号