版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lastsweetop/article/details/82658312
子类重写父类的方法时返回类型和父类方法的返回类型可以不同,但是子类的返回类型必须是父类方法返回类型的子类。
父类
public class Bicycle {
private int cadence;
private int gear;
private int speed;
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
public Bicycle newBike() {
return new Bicycle(1, 1, 1);
}
}
子类
public class MountainBike extends Bicycle {
public int seatHeight;
public MountainBike(int startHeight, int startCadence,
int startSpeed, int startGear) {
super(startCadence, startSpeed, startGear);
seatHeight = startHeight;
}
@Override
public MountainBike newBike() {
return new MountainBike(1, 1, 1, 1);
}
}
如果返回类型不是父类返回类型的子类就会报错: attempting to use incompatible return type
@Override
public Object newBike() {
return new Object();
}