2015-04-04 102 views
1

方法重載是可能的僅當重載的方法具有不同的簽名。 如果簽名相同並且只有返回類型不同,則不可能。從Java文檔帶有不同簽名和返回類型的方法重載

報價:

鑑別方法時,編譯器不考慮返回類型,所以即使他們有不同的返回類型不能聲明兩種方法具有相同簽名。

但是,具有不同簽名和不同返回類型的重載方法同時出現什麼問題?爲什麼會出現錯誤?

+0

什麼是JLS必須要在這說什麼? – 2015-04-04 18:19:52

+1

請顯示給出錯誤的代碼。 – Eran 2015-04-04 18:20:56

+0

你的錯誤是 - 你沒有返回任何東西!你的'int a(...)'方法被聲明爲返回一個int並且你什麼也沒有返回。課程:閱讀錯誤消息。 – 2015-04-04 18:25:47

回答

3

這應該是確定每JLS 8.4.9

...還有就是返回類型之間或拋出的兩種方法具有相同名稱的條款,除非他們的簽名是覆蓋當量之間沒有必要的關係。

例如,這個編譯並運行良好:

public class Test { 
    void move(int x, int y) { 
     System.out.println("inside void move(int x, int y)"); 
    } 

    int move(double x, double y) { 
     System.out.println("inside int move(double x, double y)"); 
     return 0; 
    } 

    public static void main(String[] args) { 
     Test test = new Test(); 
     test.move(0, 0); 
     test.move(0.0, 0.0); 
    } 
} 

關於你貼的代碼,你的錯誤 - 你不返回任何東西!您的int a(...)方法被聲明爲返回一個int,並且不返回任何內容。課程:閱讀錯誤消息。

1

代碼中的錯誤與方法重載無關。

你的第三個方法應該返回一個int。它有一個空的身體,所以它不會返回任何東西。如果您將其更改爲

int a(double q){ 
    return 0; 
} 

錯誤就會消失

相關問題