Javaでは、クラスにコンストラクタが宣言されていない時、
コンパイラによって、引数を取らない親クラスのコンストラクタを呼び出す、
デフォルトコンストラクタが自動的に作成されます。
Class SuperSample extends Object {
SuperSample(int i) {
//処理
}
}
Class Sample extends SuperSample {
}
この場合、Sampleクラスは以下のコードと同じ意味になります。
Class Sample extends SuperSample {
Sample() {
super();
}
}
SuperSampleクラスにはコンストラクタがあるので、
デフォルトコンストラクタは作成されません。
一方、Sampleクラスにはコンストラクタが存在しないので、
デフォルトコンストラクタが作成されます。
ですが、super()の呼び出しに対して、SuperSampleクラスには
引数を取らないコンストラクタが存在しないため、
コンパイルエラーが発生します。
このようなコードの記述はなるべく避けましょう。