ホームページ > Java > &#&チュートリアル > Java サブクラスの「暗黙のスーパー コンストラクターが未定義です」エラーを解決するにはどうすればよいですか?

Java サブクラスの「暗黙のスーパー コンストラクターが未定義です」エラーを解決するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-04 09:23:10
オリジナル
766 人が閲覧しました

How to Resolve the

デフォルト コンストラクターを使用したサブクラスの冗長コンストラクターの削除

Java で継承を使用する場合、「暗黙的なスーパー コンストラクターが未定義です」というメッセージがよく発生します。デフォルトのコンストラクターの場合」エラー。これは、サブクラスがコンストラクターを明示的に定義せず、パラメーター化されたコンストラクターを使用して基本クラスを拡張する場合に発生します。

このエラーを理解するには、Java のコンストラクターの動作を明確にすることが重要です。

  • デフォルト コンストラクター: 明示的に宣言されたコンストラクターのないクラスには、引数のないデフォルトのコンストラクターが提供されます。 Compiler.
  • 継承されたコンストラクター: サブクラスがコンストラクターを宣言していない場合、その親クラスから使用可能なコンストラクターを継承します。

この例では、 BaseClass にはパラメーター化されたコンストラクターがありますが、デフォルトのコンストラクターはありません。これは、ACSubClass にはデフォルト コンストラクターがなく、明示的にコンストラクターを定義する必要があることを意味します。

ただし、BaseClass にはパラメーター化されたコンストラクターがあるため、暗黙的にデフォルト コンストラクターはありません。 ACSubClass は存在しないコンストラクターを BaseClass から継承できないため、エラーが発生します。

これに対処するには 2 つの方法があります。

  1. 引数なしで指定するBaseClass のコンストラクター:
    someString フィールドをデフォルトに初期化するデフォルトのコンストラクターを BaseClass に追加します。値またはnull。これにより、すべてのサブクラスが引数なしのコンストラクターを継承してスーパー コンストラクターの呼び出しを満たすことができます。
  2. サブクラス コンストラクターを明示的に定義します:
    コンストラクターの継承に依存する代わりに、明示的にスーパー コンストラクターを呼び出し、必要な引数を渡す各サブクラスのコンストラクター。このアプローチにより、コンストラクターの継承に関連する潜在的な問題が回避され、基本クラスのコンストラクターが常に呼び出されるようになります。

以上がJava サブクラスの「暗黙のスーパー コンストラクターが未定義です」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート