エラー『Implicit super constructor Class() is undefined. Must explicitly invoke another constructor』回避方法
1. 発生条件
例えば以下のようにクラスAを定義し、Aの子クラスとしてBを定義する。
class A {
}
class B extends A{
public B(int b) {
}
}
このままではエラーは発生しないが、以下のようにクラスAのコンストラクタを明示的に定義したとき、
class A {
public A(int a) {
}
}
class B extends A{
public B(int b) {
}
}
Implicit super constructor A() is undefined. Must explicitly invoke another constructor
というようなエラーが発生する。
これは、クラスBのコンストラクタが親クラスAのデフォルトコンストラクタであるpublic A()
を参照しようとしているが、定義されていないためである。
2. 回避方法
回避方法としては2通りある。
2-1. デフォルトコンストラクタを明示的に定義
以下のように、public A()
を明示的に定義すればエラーを回避できる。
class A {
public A() {
}
public A(int a) {
}
}
2-2. super()
を明示的に呼び出す
以下のように、Aで定義してあるコンストラクタの引数に合わせたsuper()
を呼び出せばエラーを回避できる。
class A {
public A(int a) {
}
}
class B extends A{
public B(int b) {
super(b);
}
}
Author And Source
この問題について(エラー『Implicit super constructor Class() is undefined. Must explicitly invoke another constructor』回避方法), 我々は、より多くの情報をここで見つけました https://qiita.com/nbkn/items/0af31ee803d070fb2d8c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .