在构造函数链执行期间使用覆盖方法调用哪个方法?鉴于以下两个类,我需要知道在创建 MountainBike 对象时将调用哪个 setGear 方法。我真正的项目与自行车无关,我试图重写一个类来改变在超类的构造函数中调用的一个方法的行为,我不确定它应该如何工作......
public class Bicycle {
public int cadence;
public int gear;
public int speed;
public Bicycle(int startCadence,
int startSpeed,
int startGear) {
setGear(startGear);
setCadence(startCadence);
setSpeed(startSpeed);
}
public void setCadence(int newValue) {
cadence = newValue;
}
public void setGear(int newValue) {
gear = newValue;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
}
public class MountainBike extends Bicycle {
public int seatHeight;
public MountainBike(int startHeight,
int startCadence,
int startSpeed,
int startGear) {
super(startCadence, startSpeed, startGear);
seatHeight = startHeight;
}
public void setHeight(int newValue) {
seatHeight = newValue;
}
public void setGear(int newValue) {
if(newValue<4)
gear = newValue;
else{
gear = 4;
}
}
}