2017-10-22 9 views
0
public class Vehicle { 

    private double speed; 
    private int wheels; 

    public Vehicle() { 

    } 

    public Vehicle(double speed, int wheels) { 
    this.speed = speed; 
    this.wheels = wheels; 
    } 

} 


public class Motorcycle extends Vehicle { 

    private double engineSize; 

    public Motorcycle(double speed, double engine) { 
    super(speed, 2); 
    this.engineSize = engine; 
    } 

} 


public class Moped extends Motorcycle { 


} 

MopeがMotorcycleを拡張して以来、私はMopedがコンストラクタを作る必要があるのはなぜですか?私はMopedをコンストラクタなしで動作させたい。別のサブクラスから継承しようとしたときにエラーが発生しましたか?

答えて

4

Motorcycleデフォルトコンストラクタを持っていないので、あなたはMopedでそれを使用することはできません - しかし、あなたはMopedのために空のコンストラクタを追加することができます - クラスが持っていない場合は、同様

public class Moped extends Motorcycle { 
    public Moped() { 
     super(70, 50); //<-- or whatever values you want 
    } 
} 
+0

ありがとうございます! –

0

を引数なしのコンストラクタであれば、すべてのサブクラスは明示的に定義されたコンストラクタの1つをsuper()経由で呼び出さなければなりません。これは、Javaが冗長な言語である例です。コンストラクタを継承できるとは想定しません。

関連する問題