これが私が問題に遭遇した方法です。私は例を挙げています:
package check;
public class Check {
int a,b;
Check (int i,int j) {
a = i;
b = j;
}
}
これで問題ありません。を拡張してサブクラスを作成したいと思いましたCheck
。だから私は書いた:
class V extends Check {
}
書いてすぐにEclipseに十字架が現れ、それをクリックするとメッセージが見つかりました:
implicit super constructor Check() is undefined for default constructor. Must define an explicit constructor.
問題をグーグルで検索して追加しました
V (int i, int j) {
super(i, j);
}
Eclipseもそれを提案していました。今、私は2つの質問があります。
- にコンストラクターを使用することが義務付けられているのはなぜ
class V
ですか? 知る限り、コンストラクターを作成する必要はありません。JAVAコンパイラーはデフォルトのコンストラクターを自動的に作成して操作を続行するためです。また、メッセージから、デフォルトのコンストラクターが必要なようですが、私が書いたものではありませんが、私が言ったように、JAVAは自動的に作成しませんか? - もう 1 つ、サブクラスのコードを
V(int i, int j){ super.a=i; super.b=j}
. に変更しましたが、まだエラーが発生していました。何故ですか?このコードはsuper.a=i; super.b=j
と同じではありませんsuper(i,j)
か? また、クラス V では を使用する必要がないかもしれませんがb
、なぜコンストラクターで初期化する必要があるのでしょうか?