コンストラクター内の 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 サイトの他の関連記事を参照してください。