我可以使用另一个具有相同参数但具有不同返回类型的方法重载方法吗?

时间:2010-03-26 20:44:31

标签: java operator-overloading

例如,我可以这样:

public static void SAMENAME (sameparameter n) 
{
    some code ;
} 

public static String SAMENAME (sameparameter n) 
{
    similar code; 
    return someString ; 
} 

6 个答案:

答案 0 :(得分:3)

这是不允许的。

Java中的方法签名被认为是方法名称和参数列表。返回类型不是方法签名的一部分。

  

定义: a的两个组成部分   方法声明包括该方法   签名 - 方法的名称和   参数类型。

来源:http://java.sun.com/docs/books/tutorial/java/javaOO/methods.html

答案 1 :(得分:3)

这是不允许的。对于编译器,可能有几个适合。例如:

SAMENAME(n);

可以返回String或无效,两者都有效。

答案 2 :(得分:3)

这是最简单的说明,为什么你不能。想象一下你实现:

String overloadedMethod();
int overloadedMethod();

现在我打电话给

overloadedMethod();

那么,哪一个被调用?由于未强制使用返回类型,因此无法确定要调用的方法。

答案 3 :(得分:2)

无法在返回类型上重载方法。阅读Java Tutorial上的“重载方法”部分。

如其所述,

  

编译器不考虑返回   在区分方法时输入,所以   你不能用两种方法声明   即使他们有一个相同的签名   不同的回报类型。

答案 4 :(得分:1)

不,因为当程序遇到函数调用SameName(param n)时,它不知道使用哪个。

答案 5 :(得分:0)

不,你不能这样做。 coz somtimes在java中,方法被称为忽略返回值,这被称为“调用其副作用的方法。”

考虑一下:

void x(){}
int x(){}

x();//method call   --allowed in java

java如何确定调用哪个x()。 所以java中不允许基于返回类型的重载。