すべてCar
には特定のタイプのTyre
が必要ですか。私はジェネリックを使用できないように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が返されます。 –
素晴らしい考え方ですが、SlickTyreは 'operatingTemperature'のようないくつかの追加プロパティを持っています'Tyre'の中にうまく座る – donturner