2014-02-12 83 views
-1

如果我有在Java A和B兩個類是A extends乙如果我已經在這個方法:java類繼承與不同的返回值的方法

int getmax(){}; 

和BI有此方法:

INTEGER getmax(){}; 

將B中的方法被覆蓋或過載? 並且在這種情況下是A的B亞型?

回答

0

您無法重寫某個方法並更改其返回值。你

也可以聲明具有相同名稱但不同的參數,但不是相同的名稱,參數相同,但不同的返回值的方法。

在最後一種情況下,編譯器將不知道使用哪種方法。

1

「覆蓋方法的參數名稱,數量和類型與返回類型一樣,覆蓋方法也可以返回覆蓋方法返回的類型的子類型,該子類型被調用一個協變的返回類型「。 (http://docs.oracle.com/javase/tutorial/java/IandI/override.html

+0

所以當我調用方法getmax()哪一個將被調用,什麼是返回值?! – flashdisk

+0

你甚至不能編譯這段代碼,查看Arnaud Potier的答案。 – Smutje

4

如果A.getmax()是私有的,你會得到兩個獨立的,不相關的方法。

如果A.getmax()有任何其他訪問修飾符(包括沒有),你會因爲返回類型不兼容得到一個編譯錯誤。

+0

爲什麼它不會編譯?!我不能同時使用兩種不同的方法,因爲每個方法的簽名都不同 – flashdisk

+1

@flashdisk:您不能在返回類型上重載。不要猜測,爲什麼不嘗試編譯代碼? :) – NPE

+0

我沒有eclipes工作:) – flashdisk