暗黙のスーパーコンストラクターについては未定義です。別のコンストラクターを明示的に呼び出す必要があります



About Implicit Super Constructor Is Undefined



暗黙のスーパーコンストラクターについては未定義です。別のコンストラクターを明示的に呼び出す必要があります

画像
問題を実行する過程で問題が発生した場合、最も簡単な方法は、最初にコンパイラーを実行することです。

Eclipseでa)を実行した結果は、次のとおりです。
引数なしのコンストラクターが呼び出されます
BはクラスAを継承するため、波を分析して知ることができます。
クラスAのパラメーターなしの構築メソッドでは、「Aの引数なしのコンストラクターが呼び出されます」を直接出力します。
クラスBは構築メソッドを指定しませんが、パラメーターのないクラスBのデフォルトの構築メソッドがあり、クラスBはクラスAを継承し、「Aの引数なしのコンストラクターが呼び出されます」も出力します。
したがって、クラスCのメイン関数で、クラスBを使用してインスタンスbを作成します。クラスBは、クラスAの引数なしの構築メソッドを継承し、「Aの引数なしのコンストラクターが呼び出されました」と出力します。



b)

class A { public A(int x) { } } class B extends A { public B() { } } public class C { public static void main(String[] args) { B b = new B() } }

bでプログラムをコンパイルすると、エラーが報告されます 暗黙のスーパーコンストラクターA()は未定義です。別のコンストラクターを明示的に呼び出す必要があります
示されているように
BはAを継承することがわかっているので、Bを作成する前にAを作成します。
Bには人為的に指定された工法がないため、新しいBを使用する場合は、システムによって自動的に提供されるパラメータなしの工法が使用されますが、現時点では、Bの親クラスAはすでに人為的な工法でカバーされています。デフォルトのパラメータなしの構築方法。したがって、クラスBのパラメータなしの構築方法は親クラスAに存在しないため、エラーが報告されます。