ホームページ  >  記事  >  Java  >  コンストラクターでは常に「super()」を使用する必要がありますか?

コンストラクターでは常に「super()」を使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 12:30:30585ブラウズ

Should You Always Use `super()` in Constructors?

コンストラクター内の super() の存在はオプションですか?

オブジェクト指向プログラミングでは、派生クラスでコンストラクターを利用するのが一般的です。スーパークラスでコンストラクターを呼び出します。ただし、一部の開発者は、コンストラクター内で super() を明示的に指定する必要性を疑問視しています。

コンパイラーによる super() の自動呼び出し

Java コンパイラーは、サブクラス コンストラクターがスーパークラス コンストラクターを指定しない場合、スーパークラスのアクセス可能な引数なしのコンストラクター。これは、ほとんどの場合、super() の省略はプログラムの動作に影響を与えないことを意味します。

ルールの例外

ただし、場合もあります。 super() の明示的な呼び出しが必要な場合:

  • スーパークラスにアクセス可能な引数なしのコンストラクターがない場合。
  • サブクラス コンストラクターに引数があり、スーパークラスに引数を受け入れるコンストラクター。
  • サブクラス コンストラクターが、デフォルトの引数なしのコンストラクター以外のスーパークラス内の特定のコンストラクターを呼び出す必要がある場合。

存在する場合のコンストラクターの使用法引数

サブクラス コンストラクターに引数がある場合、適切な引数をスーパークラス コンストラクターに渡すのはサブクラス コンストラクターの責任です。コンパイラは、明示的に指定しない限り、引数を指定してスーパークラス コンストラクターを自動的に呼び出しません。

次のコードを考えてみましょう。

<code class="java">public class Base {
    private Base() {}
}

public class Derived extends Base {
    public Derived(int i) {
        super(); // Call the default no-args constructor of Base
    }
}</code>

Inこの例では、Base には引数のないプライベート コンストラクターがあるため、Derived コンストラクターでの super() 呼び出しが不可欠です。

以上がコンストラクターでは常に「super()」を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。