使用不同的返回类型实现重载

时间:2017-04-24 07:40:25

标签: java oop design-patterns

我需要使用两个不同的返回类型重载一个方法,并且在java中是不可能的,所以如果我有一个带有" Object"的超类是有意义的。返回类型 然后我在两个不同的类中重写这个方法?

class A{
    Object method()
    {
    ...
    }
}

class B extends A{
    @Override
    Integer method()
    {
    ...
    }
}

class C extends A{
    @Override
    Double method()
    {
    ...
    }
}

还是有更好的方法吗?或者只是其他解决方案?

2 个答案:

答案 0 :(得分:5)

  

如果我有一个带有“Object”返回类型的超类,那么它是否有意义然后我在两个不同的类中重写此方法?

是。这就是为什么Covariant return types从Java 1.5引入的原因。

  

在1.5之前,覆盖方法不能有不同的返回类型。这在1.5中放松了。子类方法的返回类型R2可能与超类方法的返回类型R1不同,但R2应该是R1的子类型。即,子类可以返回类型,可以是超类返回类型的子类型。

答案 1 :(得分:0)

好吧,我会说如果他们有不同的返回类型而不是子类,你必须先说服自己为什么要去overriding。我不认为这是压倒一切的最佳用例。

您应该选择方法overloading。您不必使用覆盖不必要的替换overloading