java继承——变量访问特点

1.一般子类继承父类,顺带就会继承了父类的变量,在不重名的情况下。

在父子类的继承关系当中,如果成员变量重命名,则创建子类对象时,访问有两种方式:

①直接通过子类对象访问成员变量:

等号左边时谁,就优先用谁,没有则向上找。

②间接通过成员方法访问成员变量:

 

父类:

package java继承01;

/**
 * @Author: Jason
 * @Date: 2019/7/11 9:34
 * @Version 1.0
 */
public class Fu {
    int numFu = 10;
    int num =100;
    public void MethodFu(){
        //使用的是本类当中的变量 不会向下寻找子类的
        System.out.println(num);
    }
}

子类 继承 父类:

package java继承01;

/**
 * @Author: Jason
 * @Date: 2019/7/11 9:34
 * @Version 1.0
 */
public class Zi extends Fu {
    int numZi = 20;
    int num = 200;


    public void MethodZi() {
        //因为本类当中有num,所以这里用的是本类当中的num
        System.out.println(num);
    }
}

package java继承01;

/**
 * @Author: Jason
 * @Date: 2019/7/11 9:33
 * @Version 1.0
 */
public class DemoExtends {
    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);
        System.out.println(zi.numZi);




        /**
         * 在父子类的继承关系当中,如果成员变量重命名,则创建子类对象时,访问有两种方式:
         * ①直接通过子类对象访问成员变量:
         *     等号左边时谁,就优先用谁,没有则向上找。
         */
        System.out.println(zi.num); //优先子类,200
        System.out.println(fu.num); //父类  100
        // 重名名的情况下 在哪个类下 就优先哪个类的

        System.out.println("②");


        /**
          ②间接通过成员方法访问成员变量:
         */
        //这个方法是子类的,优先用子类的,没有的话就向上找
        zi.MethodZi(); //200

        //这个方法是在父类当中定义的,所以用的父类的变量值
        zi.MethodFu(); //100
    }
}

显示如:

2.区分子类方法中的三种重名的变量。

 

本类局部变量: 直接写变量名

本类当中的成员变量:this.成员变量名

父类当中的成员变量:super.成员变量名

package java继承02;

/**
 * @Author: Jason
 * @Date: 2019/7/11 10:45
 * @Version 1.0
 */
public class Fu {
    int num = 10;       //父类的成员变量

}
package java继承02;

/**
 * @Author: Jason
 * @Date: 2019/7/11 10:45
 * @Version 1.0
 */

/**
 *  本类局部变量: 直接写变量名
 *  本类当中的成员变量:this.成员变量名
 *  父类当中的成员变量:super.成员变量名
 */
public class Zi extends Fu {
    int num = 20;               //子类当中的成员变量
    public void Method(){
        int num = 30;             //子类当中的局部变量

        System.out.println(num);   //30 局部变量
        System.out.println(this.num);  //20  本类的成员变量
        System.out.println(super.num);  //10  父类的成员变量



    }
}
 package java继承02;

/**
 * @Author: Jason
 * @Date: 2019/7/11 10:46
 * @Version 1.0
 */
public class DemoExtends {
    public static void main(String[] args) {
     Zi zi = new Zi();
     zi.Method();




    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值