Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于方法重载的澄清_Java_String_Overloading - Fatal编程技术网

Java 关于方法重载的澄清

Java 关于方法重载的澄清,java,string,overloading,Java,String,Overloading,我有以下代码,我需要一些关于重载概念的澄清 当我执行此操作时,输出是字符串。尽管object是超类,为什么它显示string而不是object 预先感谢,因为当有一个精确匹配时,在重载函数中,JVM不会考虑泛化。i、 它将寻找与参数类型匹配的最佳匹配。在本例中,“Hello”与字符串类型完全匹配。因为字符串比对象更适合字符串。因此不会考虑 static void print(Object o) 之所以称为stringprint,是因为您传递了“Hello”,它是string对象 String还

我有以下代码,我需要一些关于重载概念的澄清

当我执行此操作时,输出是字符串。尽管
object
是超类,为什么它显示
string
而不是
object


预先感谢

,因为当有一个精确匹配时,在重载函数中,JVM不会考虑泛化。i、 它将寻找与参数类型匹配的最佳匹配。在本例中,“Hello”与字符串类型完全匹配。因为

字符串
对象
更适合
字符串
。因此不会考虑

static void print(Object o)

之所以称为
string
print,是因为您传递了
“Hello”
,它是
string
对象


String
还扩展了常规的
对象
,但重载调用也是最高级的类型。

当前,此版本的重载方法执行:

static void print(String s){
    System.out.println("string");
}
既然你这样打电话:
print(“你好”)


只有当且仅当未找到匹配的正确版本时,才会发生数据转换。并找到编译器的精确匹配项。

本例中的规则是:

更具体的签名将适用

String
Object
更具体,这就是为什么使用
print(String)
。例如,在
main
中尝试
print(null)
,您会发现这样的代码甚至不会编译,因为编译器无法区分
null
字符串还是
对象


首先检查JVM
查看
打印(字符串)
,如果未找到,它将使用字符串的超类参数搜索
print()
。如果仍然未找到,则为
字符串的超类的超类
。这个算法一直持续到出现
打印(对象)
。或报告错误

static void print(String s){
    System.out.println("string");
}