我想知道是否有可能为超类的每个子类扩展构造函数参数。
例如:

public class Car{
protected String regNum;
protected Car(String regNum){
    this.regNum = regNum;
  }
}
public class GasCar extends Car{
protected double gasEmissions;
protected GasCar(double gE){
    gasEmissions = gE;
  }
}


有没有一种方法可以通过继承在GasCar构造函数中的Car构造函数中使用参数?

最佳答案

简而言之:不是直接的,而是某种。您可能正在寻找的是对超级构造函数的调用,例如:

public class Car {

    protected String regNum;

    protected Car(String regNum) {
        this.regNum = regNum;
    }
}

public class GasCar extends Car {

    protected double gasEmissions;

    protected GasCar(String regNum, double gE) {
        super(regNum);
        gasEmissions = gE;
    }
}


请记住,调用超级构造函数(或任何其他构造函数)是在构造函数中要做的第一件事。

编辑:正如其他两个答案所说,无论如何,您都需要调用一个超级构造函数(如果您不直接调用它,它将尝试调用不带参数的一个)。

07-27 20:23