如下圖所示:如果重寫方法的返回類型是原始的(例如double),我們可以改變重寫方法的返回類型(例如int,char)嗎?
方法被覆蓋:
double add (int a ,int b){
}
方法overridding上述方法:
int add(int a,int b){
}
如下圖所示:如果重寫方法的返回類型是原始的(例如double),我們可以改變重寫方法的返回類型(例如int,char)嗎?
方法被覆蓋:
double add (int a ,int b){
}
方法overridding上述方法:
int add(int a,int b){
}
使用原始類型是不可能的,但是在JDK 1.5中添加了一個名爲covariant return types的功能。所以,使用這個特性,子類可以返回比父類聲明的類型更具體的類型。
下面的代碼在JDK 1.7
public static class A {
Number go() { return 0; };
}
public static class B extends A {
@Override
Integer go() { return 0; }
}
否,則不能改變返回類型。您可以通過提供備用或附加輸入來重載方法。
即
int add(int a, int b, int c)
另一種解決方案將是使基類型參數化類型,並且當擴展或實例化斷言的返回類型。
爲什麼你不能只是試試呢? –
看起來你缺少一些代碼。你能否更新這個? –
不,這樣做意味着如果調用子類的方法,任何使用超類接口的人都會收到一個無效值。 –