一尘不染

Java 什么时候使用super()?

java

我目前正在Java课程中学习有关类继承的信息,我不知道何时使用该super()调用?

编辑:
我发现使用此代码示例:super.variable

class A
{
    int k = 10;
}

class Test extends A
{
    public void m() {
        System.out.println(super.k);
    }
}

因此,我知道在这里,你必须使用它super来访问k超类中的变量。但是,在其他情况下,该怎么super();办?在其自己的?


阅读 1254

收藏
2020-03-21

共1个答案

一尘不染

精确 调用始终super()是多余的。它明确地在做否则会隐式地做的事情。这是因为如果你省略对超级构造函数的调用,则无论如何都将自动调用无参数的超级构造函数。并不是说这是不好的风格。有些人喜欢露骨。

但是,当超级构造函数采用你要从子类传递的参数时,它才变得有用。

public class Animal {
   private final String noise;
   protected Animal(String noise) {
      this.noise = noise;
   }

   public void makeNoise() {
      System.out.println(noise);
   }
}

public class Pig extends Animal {
    public Pig() {
       super("Oink");
    }
}
2020-03-21