我們很易對下面這些問題感到迷惑:為什麼只有類名和方法自變量列出?為什麼不根據返回值對方法加以區分?比如對下面這兩個方法來說,雖然它們有同樣的名字和自變量,但其實是很容易區分的:
void f() {}
int f() {}
若編譯器可根據上下文(語境)明確判斷出含義,比如在int x=f()中,那麼這樣做完全沒有問題。然而,我們也可能調用一個方法,同時忽略返回值;我們通常把這稱為“為它的副作用去調用一個方法”,因為我們關心的不是返回值,而是方法調用的其他效果。所以假如我們象下面這樣調用方法:
f();
Java怎樣判斷f()的具體調用方式呢?而且別人如何識別並理解代碼呢?由於存在這一類的問題,所以不能根據返回值類型來區分過載的方法。