具有扩展参数的Java子类构造函数
我想知道是否有可能为超类的每个子类扩展构造函数参数。 例如:具有扩展参数的Java子类构造函数,java,Java,我想知道是否有可能为超类的每个子类扩展构造函数参数。 例如: 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
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;
}
}
请记住,调用超级构造函数(或任何其他构造函数)是在构造函数中需要做的第一件事
编辑:正如其他两个答案所说,您仍然需要调用超级构造函数(如果您不直接调用它,它将尝试调用不带参数的构造函数)。您是否尝试编译此代码?它不会编译,因为GasCar构造函数没有调用超级构造函数
而且,您使用继承这个词的方式是错误的。参数不是继承的-方法是继承的。构造函数永远不会被继承,因为它没有意义——当你对一个对象进行子类化时,它需要自己的构造函数。你能详细说明一下吗?我真的很想知道继承是否有我不了解的东西:)