这对不能在程序中共存并产生过载,但我不明白为什么不可以。我听说每一对都会单独工作,但不能一起工作。如果它们都存在于一个类中,则对 sum 的引用会在编译期间生成不明确的错误。
static void sum(int a, double b) {
System.out.println(a);
}
static void sum(double a, int b) {
System.out.println(a);
}
我期望,因为参数的类型和顺序都不同,所以方法“sum”遵循正确的重载条件。
这些方法不能共存于同一个类中,因为尝试调用它们时会出现歧义。两种方法具有相同的签名 (
void sum(double,int)
),这意味着它们共享相同的名称和相同数量的参数,但具有不同的参数数据类型。在 Java 中,方法在编译期间根据其参数的类型进行调用。当使用类似参数类型(例如 sum
和 int
或 int
和 double
)调用 double
方法时,编译器将无法确定应调用哪个方法,因为两者都与调用匹配签名。这种歧义会导致编译错误,因此这两种方法不能在同一上下文中共存。要解决此问题,需要重命名其中一个方法,或者需要修改其签名以使其不同,不仅重新排列参数,而且不会更改签名。