我需要使用两个不同的返回类型重载一个方法,并且在java中是不可能的,所以如果我有一个带有" Object"的超类是有意义的。返回类型 然后我在两个不同的类中重写这个方法?
class A{
Object method()
{
...
}
}
class B extends A{
@Override
Integer method()
{
...
}
}
class C extends A{
@Override
Double method()
{
...
}
}
还是有更好的方法吗?或者只是其他解决方案?
答案 0 :(得分:5)
如果我有一个带有“Object”返回类型的超类,那么它是否有意义然后我在两个不同的类中重写此方法?
是。这就是为什么Covariant return types
从Java 1.5引入的原因。
在1.5之前,覆盖方法不能有不同的返回类型。这在1.5中放松了。子类方法的返回类型R2可能与超类方法的返回类型R1不同,但R2应该是R1的子类型。即,子类可以返回类型,可以是超类返回类型的子类型。
答案 1 :(得分:0)
好吧,我会说如果他们有不同的返回类型而不是子类,你必须先说服自己为什么要去overriding
。我不认为这是压倒一切的最佳用例。
您应该选择方法overloading
。您不必使用覆盖不必要的替换overloading
。