在Java函数重载中,函数参数的类型或编号是否正确,请纠正我
我正在做一些测试,发现Java重载不正确,例如
public static void doSomeThing()
和
public static int doSomeThing()
。
这两个函数是相同的,不应编译但仍在运行。
喜欢此代码。
package com.sudeep.test;
public class StaticFunctionOverload {
public static void main(String arg[]) {
doSomeThing();
}
public static int doSomeThing() {
System.out.println("Im in int block");
return -1;
}
public static void doSomeThing() {
System.out.println("Im in void block");
}
}
答案 0 :(得分:2)
方法的签名必须不同:
Java编程语言支持重载方法,并且Java可以区分具有不同方法签名的方法。这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称(对此有一些限定条件,将在标题为“接口与继承”的课程中进行讨论)。
阅读:
https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html
因此,这将起作用,例如:
package com.sudeep.test;
public class StaticFunctionOverload {
public static void main(String arg[]) {
doSomeThing();
}
public static int doSomeThing() {
System.out.println("Im in int block");
return -1;
}
public static void doSomeThing(int param1) {
System.out.println("Im in void block with " + param1);
}
}
答案 1 :(得分:1)