尝试从另一个子类继承时出错?

时间:2017-10-22 04:29:29

标签: java

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扩展了摩托车,为什么它告诉我Moped需要制作一个构造函数?我希望Moped能够在没有任何构造函数的情况下工作。

2 个答案:

答案 0 :(得分:4)

由于Motorcycle没有默认构造函数,因此您无法在Moped中使用它 - 但您可以为Moped添加空构造函数 - 比如,

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

答案 1 :(得分:0)

如果一个类没有no-args构造函数,那么每个子类都必须通过super()调用其中一个显式定义的构造函数。这是Java作为冗长语言的一个例子;它不会假设它可以继承构造函数。