java - 如何改变重写方法的返回类型?

标签 java oop design-patterns

如何强制所有汽车都应配备特定类型的轮胎?我正在使用 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     
    }

最佳答案

不幸的是,covariant return type仅从java5添加到java中。旧版本[例如 1.3] 不需要方差返回类型。

您可以在this article中阅读更多相关信息。

关于java - 如何改变重写方法的返回类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320562/

相关文章:

c# - 集合属性应该是只读的——漏洞?

java - 调试 `Widget is disposed`异常

java - fork 的虚拟机没有正确告别就终止了。 VM 崩溃或调用 System.exit

python - 如何防止在 __init__() python 中创建对象

java - 如何让我的 MenuItems 从单独的类中调用方法?

c++ - 另一个物体内部的复杂物体

java - server.tomcat.max-threads VS corePoolSize VS spring.datasource.tomcat.max

java - Java中更新包含hashmap的hashmap的某个值

ASP.NET MVP - 利用用户控件

php - 什么是存储库、服务和操作/ Controller ?