Java-super关键字

基本介绍

super代表父类的引用,用于访问父类的属性,方法和构造器

基本语法

  • 访问父类的属性,但不能访问父类的private属性

super.属性名

A类

package com.hsp.extend._super;

public class A {
    public int n1 = 100;
    protected int n2 = 200;
    int n3 = 300;
    private int n4 = 400;

    public void test100() {}
    protected void test101() {}
    void test102() {}
    private void test103() {}
}
    

B类

package com.hsp.extend._super;

public class B extends A{
    public void hi(){
        System.out.println(super.n1 + " " +super.n2 + " " + super.n3 + " ");
    }
}

  • 访问父类的方法,不能访问父类的private方法

super.方法名(参数列表)

A类和上面相同

B类

package com.hsp.extend._super;

public class B extends A{
    public void ok(){
        super.test100();
        super.test101();
        super.test102();
    }
}

  • 访问父类的构造器

super(参数列表);//只能放在构造器的第一句,,只能出现一句

A.java

package com.hsp.extend._super;

public class A {
    public int n1 = 100;
    protected int n2 = 200;
    int n3 = 300;
    private int n4 = 400;

    public void test100() {}
    protected void test101() {}
    void test102() {}
    private void test103() {}
    String name;
    public A(String name){
        this.name = name;
        System.out.println(name);
    }
}

B.java

package com.hsp.extend._super;

public class B extends A{
    public B(){
        super("This is A");
        System.out.println("This is B");
    }
}

Super01.java

package com.hsp.extend._super;

public class super01 {
    public static void main(String[] args) {
        B b = new B();
    }
}

Super的使用细节

supper给编程带来的便利:

1.调用父类的构造器的好处(分工明确,父类属性由父类初始化,子类的属性由子类初始化)

2.当子类中由和父类中的成员(属性和方法)重名时,为了访问父类的成员,必须通过super,如果没有重名,使用super,this直接访问是一样的效果