[英]Implement overload with differents return types
我需要重載具有兩個不同返回類型的方法,並且在Java中是不可能的,所以如果我有一個帶有“對象”返回類型的超類,然后在兩個不同的類中覆蓋此方法,是否有意義?
class A{
Object method()
{
...
}
}
class B extends A{
@Override
Integer method()
{
...
}
}
class C extends A{
@Override
Double method()
{
...
}
}
還是有更好的方法來做到這一點? 或僅僅是其他解決方案?
如果我有一個帶有“對象”返回類型的超類,那么我在兩個不同的類中重寫此方法是否有意義?
是。 這就是為什么Java 1.5引入了Covariant return types
原因。
在1.5之前,覆蓋方法不能具有不同的返回類型。 在1.5中放松了。 子類方法的返回類型R2可能與超類方法的返回類型R1不同,但R2應該是R1的子類型。 即,子類可以返回類型可以是超類返回類型的子類型。
好吧,我要說的是,如果它們具有不同的返回類型而不是子類,那么您必須首先說服自己為什么要overriding
。 我認為這不是重寫的最佳用例。
您應該改為方法overloading
。 你不必不必要的替代overloading
與覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.