我什么时候使用 super()?

2022-08-31 11:47:12

我目前正在Java课程中学习类继承,我不明白何时使用调用?super()

编辑:
我发现这个代码示例在哪里使用:super.variable

class A
{
    int k = 10;
}

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

所以我明白,在这里,你必须使用来访问超类中的变量。但是,在任何其他情况下,该怎么办?靠它自己?superksuper();


答案 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");
    }
}

答案 2

super用于调用父类的 和。constructormethodsproperties


推荐