Java super关键字、隐藏(static method+Filed)

  • (提醒)成员变量和静态方法出现在子类中,我们一般称之为隐藏,请看下面的代码,不要被子类中“覆写”的静态方法所迷惑。
  • 其实成员变量(无论是静态、实例、任何访问权限)、静态方法、私有方法都是静态绑定。
package cn.jxau.yuan.sharWeb;

/**
 * Created by 编程只服JAVA on 2017.06.06.
 */
public class ExtendsTest {
    int weight = 121;
    static void show(){
        System.out.println("Father");
    }
}

class Sub extends ExtendsTest{
    int weight = 123;

    /**
     * 父类中的成员变量和静态方法出现在子类中,我们一般称之为隐藏
     */
    static void show(){
        System.out.println("son");
    }

    public static void main(String[] args) {
        ExtendsTest extendsTest = new Sub();
        System.out.println("向上转型进行调用:.......");
        extendsTest.show();
        System.out.println(extendsTest.weight);
        System.out.println("直接调用:...............");
        Sub sub = new Sub();
        sub.show();
        System.out.println(sub.weight);
    }
}

运行结果:

Java super关键字、隐藏(static method+Filed)_第1张图片
image.png

super:某老师

  • super关键字:表示父类的绑定特征

  • 通过super到子类所继承的父类中找到与父类绑定的属性和方法
    语法:super.父类中的属性or方法

  • super用于调用父类中定义的属性和成员方法
    覆盖的方法都是跟子类绑定的,所以找不到与父类动态绑定的私有属性,所以需要通过super关键字找到父类静态绑定的方法和动态绑定的属性
    PS:super不能出现在静态方法里,因为静态方法都是通过类调用的,不能接收this指针

  • super在构造方法的作用:

  • 通过super来显示指定调用父类的哪个构造方法,同时给该构造方法传参数

  • 语法:如果要显示调用父类的某个构造方法,就必须放在子类构造方法的第一句并且传进对应的参数,只能写一条!

子类构造方法(String name){
    Super(name);//就会找父类的参数签名为String的构造方法,把this指针传给该构造方法
}

你可能感兴趣的:(Java super关键字、隐藏(static method+Filed))