• super 关键词

    super 关键词

    • 调用父类 (Superclass) 的成员或者方法
    • 调用父类的构造函数
    1. 调用父类 (Superclass) 的成员或者方法

    如果你的方法覆写一个父类成员的方法, 你可以通过 super 关键字调用父类的方法. 考虑下面的父类:

    1. public class Superclass {
    2. public void printMethod() {
    3. System.out.println("Printed in Superclass.");
    4. }
    5. }

    下面是一个子类 (subclass), 叫做 Subclass, 覆写了 printMethod():

    1. public class Subclass extends Superclass {
    2. // overrides printMethod in Superclass
    3. public void printMethod() {
    4. super.printMethod();
    5. System.out.println("Printed in Subclass");
    6. }
    7. public static void main(String[] args) {
    8. Subclass s = new Subclass();
    9. s.printMethod();
    10. }
    11. }

    输出

    1. Printed in Superclass.
    2. Printed in Subclass
    1. 调用父类的构造函数

    使用 super 关键字调用父类的构造函数. 下面的 MountainBike 类是 Bicycle 类的子类. 它调用了父类的构造方法并加入了自己的初始化代码:

    1. public MountainBike(int startHeight,
    2. int startCadence,
    3. int startSpeed,
    4. int startGear) {
    5. super(startCadence, startSpeed, startGear);
    6. seatHeight = startHeight;
    7. }

    调用父类的构造体必须放在第一行.

    使用

    1. super();

    或者:

    1. super(parameter list);

    通过 super(), 父类的无参构造体会被调用. 通过 super(parameter list), 父类对应参数的构造体会被调用.

    注意: 构造体如果没有显式的调用父类的构造体, Java 编译器自动调用父类的无参构造. 如果父类没有无参构造, 就会报错 ( compile-time error).