なぜサブクラスは自分のデフォルトのコンストラクタだけを使用できないのですか? BikeがVehicleクラスを拡張するとき、なぜBikeがBikeオブジェクトを作成するためにVehicleのコンストラクタを使用しているのですか?サブクラスは常にスーパークラスのデフォルトのコンストラクタを使用しますか?
バイクオブジェクトに親クラスには存在しないメンバーがさらにあり、スーパークラスを使用して追加の重複コードの書き込みを減らして初期化すると、親クラスのコンストラクターを使用しても問題ありません。それは大丈夫です(私は完全に間違っているかもしれません)。
public class Vehicle {
Vehicle()
{
System.out.println("Vehicle is created");
}
}
public class Bike extends Vehicle {
public static void main(String[] args){
Bike HondaBike = new Bike();
}
}
Output: Vehicle is created
https://stackoverflow.com/questions/2967662/anyway-to-not-call-superclass-constructor-in-javaで確認できます。ところで、親のコンストラクタを呼び出さない方法はありません。子のクラスには親のコンストラクタが含まれている必要がある場合は、そのコンストラクタとともに拡張できます。 – Oguz
これはJavaの仕組みです。 – Heri