Java サブクラスでスーパークラス コンストラクターを明示的に呼び出す必要がありますか?
サブクラスを定義するとき、明示的に呼び出すコンストラクターを見るのが一般的です。 super() を使用するスーパークラス コンストラクター。ただし、これが必要かどうか疑問に思う人もいるかもしれません。
スーパークラスはコンパイラによって自動的に追加されますか?
はい、サブクラス コンストラクターがスーパークラスへの呼び出しを省略する場合は可能です。コンストラクターを指定すると、コンパイラーはスーパークラス内のアクセス可能な引数なしのコンストラクター (引数なしのコンストラクター) を自動的に呼び出します。このデフォルトの動作は、コンストラクター チェーンと呼ばれます。
コンストラクターの種類
の場合、super( ) 必須ですか?
super() の明示的な使用は、次の場合にのみ必要です。
例 1:
<code class="java">public class Base {} public class Derived extends Base {}</code>
いいえBase にはデフォルトのコンストラクターがあるため、super() への明示的な呼び出しが必要です。
例 2:
<code class="java">public class Base { public Base(int i) {} } public class Derived extends Base { public Derived(int i) { super(i); // Explicitly call the Base(int) constructor } }</code>
この場合、super(i) が必要です。スーパークラスには引数のないコンストラクターがありません。サブクラス コンストラクターは、その i パラメーターに初期値を提供する必要があります。
これらの概念を理解することで、不必要な super() 呼び出しを回避し、適切なコンストラクター チェーンを確保できます。サブクラス内。
以上がJava サブクラスは常にスーパークラス コンストラクターを明示的に呼び出す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。