gpt4 book ai didi

java - java中函数重载的二义性

转载 作者:行者123 更新时间:2023-12-01 17:28:58 27 4
gpt4 key购买 nike

由于返回类型在函数重载中不起任何作用,编译器仅检查调用时使用的那部分代码的唯一存在性。

那为什么这段代码不包含错误

class Temp{
Temp(){
System.out.println("Default Constructor");
}
void Temp(){
S.o.p("HEll");
}
public static void main(String a[]){
new Temp();
}
}

输出=默认构造函数...//我很震惊没有编译时间错误,因为编译器只检查调用时使用的代码部分,这意味着编译器只需要检查 Temp() 的唯一存在性,并且 Temp() 没有唯一的存在性。

请详细说明

最佳答案

因为 void Temp() 是一个方法,您应该在实例上调用它。允许用类名声明方法,但调用不同。您只能使用 new 运算符调用构造函数。

您可以在JLS#8.8. Constructor Declarations中阅读有关构造函数的更多信息。

Constructors are never invoked by method invocation expressions (§15.12).

您应该注意的主要区别是构造函数没有返回类型,而重载的定义包括返回类型。

关于java - java中函数重载的二义性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com