我想知道是否有可能为超类的每个子类扩展构造函数参数。
例如:
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;
}
}
请记住,调用超级构造函数(或任何其他构造函数)是在构造函数中要做的第一件事。
编辑:正如其他两个答案所说,无论如何,您都需要调用一个超级构造函数(如果您不直接调用它,它将尝试调用不带参数的一个)。