# 使用关键字`super`

> 原文： [https://docs.oracle.com/javase/tutorial/java/IandI/super.html](https://docs.oracle.com/javase/tutorial/java/IandI/super.html)

## 访问超类成员

如果您的方法覆盖了其超类的方法之一，则可以通过使用关键字`super`来调用重写方法。您也可以使用`super`来引用隐藏字段（尽管不鼓励隐藏字段）。考虑这个类，`Superclass`：

```
public class Superclass {

    public void printMethod() {
        System.out.println("Printed in Superclass.");
    }
}

```

这是一个名为`Subclass`的子类，它覆盖了`printMethod()`：

```
public class Subclass extends Superclass {

    // overrides printMethod in Superclass
    public void printMethod() {
        super.printMethod();
        System.out.println("Printed in Subclass");
    }
    public static void main(String[] args) {
        Subclass s = new Subclass();
        s.printMethod();    
    }
}

```

在`Subclass`中，简单名称`printMethod()`是指在`Subclass`中声明的名称，它将覆盖`Superclass`中的名称。因此，要引用从`Superclass`继承的`printMethod()`，`Subclass`必须使用限定名称，如图所示使用`super`。编译和执行`Subclass`将打印以下内容：

```
Printed in Superclass.
Printed in Subclass

```

## 子类构造函数

以下示例说明如何使用`super`关键字来调用超类的构造函数。回想一下 [`Bicycle`](subclasses.html) 的例子，`MountainBike`是`Bicycle`的子类。这是`MountainBike`（子类）构造函数，它调用超类构造函数，然后添加自己的初始化代码：

```
public MountainBike(int startHeight, 
                    int startCadence,
                    int startSpeed,
                    int startGear) {
    super(startCadence, startSpeed, startGear);
    seatHeight = startHeight;
}   

```

调用超类构造函数必须是子类构造函数中的第一行。

调用超类构造函数的语法是

```
super();  

```

or:

```
super(parameter list);

```

使用`super()`，将调用超类无参数构造函数。使用`super(parameter list)`，将调用具有匹配参数列表的超类构造函数。

* * *

**Note:** If a constructor does not explicitly invoke a superclass constructor, the Java compiler automatically inserts a call to the no-argument constructor of the superclass. If the super class does not have a no-argument constructor, you will get a compile-time error. `Object` _does_ have such a constructor, so if `Object` is the only superclass, there is no problem.

* * *

如果子类构造函数显式或隐式地调用其超类的构造函数，您可能会认为将调用一整个构造函数链，一直回到`Object`的构造函数。事实上，情况就是这样。它被称为 _ 构造函数链接 _，当需要很长的类下降时你需要注意它。