1. ホーム
  2. java

[解決済み] super()はいつ使うのですか?

2023-05-30 14:37:43

質問

現在、Javaの授業でクラス継承について学んでいるのですが、どのような場合に super() を呼び出すのか?

編集してください。

私はこのコード例を見つけました。 super.variable が使われます。

class A
{
    int k = 10;
}

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

ということで、ここでは super にアクセスするために k 変数にアクセスすることができます。しかし、それ以外の場合、何をするかというと super(); は何をするのでしょうか?それ自体で?

どのように解決するには?

呼び出し まさに 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");
    }
}