正常に解決されたJavaエラー:暗黙のスーパーコンストラクターXX()が未定義です。別のコンストラクターを明示的に呼び出す必要があります。



Successfully Resolved Java Error



今日、継承に関するコードを書いているときにこの問題に遭遇しました。
暗黙のスーパーコンストラクターXX()は未定義です。別のコンストラクターを明示的に呼び出す必要があります。

public class Parent { String name Parent(String name){ this.name = name } } class Son extends Parent { int age Son(int age){ this.age = age } }

このコードはエラーを報告します。



その理由は:

サブクラスの構築メソッドを呼び出すとき、システムは、superキーワードが使用されているかどうかに関係なく、親クラスの構築メソッドを自動的に呼び出します。
サブクラスのコンストラクターがどのような形式であっても、superキーワードが使用されていない限り、親のパラメーターなしのコンストラクターがデフォルトで呼び出されます。
親クラスのデフォルトコンストラクターはここで上書きされ、パラメーターなしのコンストラクターは記述されません。



解決策1:解決策1:

親クラスに空のメソッドを書き込むか、親クラスのすべてのコンストラクターを削除します。

public class Parent { String name Parent(){} Parent(String name){ this.name = name } } class Son extends Parent { int age Son(int age){ this.age = age } }

解決策2:解決策2:



superキーワードを使用して、呼び出す親クラスのコンストラクターを指定します。

public class Parent { String name Parent(String name){ this.name = name } } class Son extends Parent { int age Son(String name,int age){ super(name) this.age = age } }

参照:

https://blog.csdn.net/dlf123321/article/details/53411539