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
    }
}

显示如:

java继承——变量访问特点_第1张图片

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();




    }
}

java继承——变量访问特点_第2张图片

你可能感兴趣的:(java,se学习,编程学习技术)