我該如何強制所有Car
s應該有Tyre
s的特定類型?我正在使用Java 1.3(用於移動設備),因此無法使用泛型。如何更改重寫方法的返回類型?
abstract class Car{
private Tyre[] tyres;
protected Car(){
tyres = createTyres();
}
protected abstract Tyre[] createTyres();
public Tyre[] getTyres(){
return tyres;
}
}
abstract class Tyre{}
//Concrete classes
class SlickTyre extends Tyre{}
class RacingCar extends Car {
public RacingCar(){
}
protected SlickTyre[] createTyres(){
return new SlickTyre[]{};
}
public SlickTyre[] getTyres(){
//this won't compile as it overrides the parent return type
}
爲什麼要返回SlickTyre?通常情況下,您的RacingCar類將會像FourByFour和Compact一樣返回Tire,但讀取由RacingCar返回的Tire的TreadDepth屬性將返回0. – 2012-02-16 23:21:17
思路不錯,但'SlickTyre'具有一些額外的屬性,例如'operatingTemperature',它們不會坐在'Tyre'內很好+ – donturner 2012-02-16 23:35:14