gpt4 book ai didi

java - 这个java代码的解释是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:45:12 25 4
gpt4 key购买 nike

我有以下代码:

public class Main {
public void method(Object o)
{
System.out.println("Object Version");
}
public void method(String s)
{
System.out.println("String Version");
}
public static void main(String args[])
{
Main question = new Main();
question.method(null);//1
}
}

为什么结果是“String Version”?如果第一个方法采用 StringBuffer 对象,为什么会出现编译器错误?
另一种情况:如果第一个方法采用 StringBuffer 对象并且我编写 question.method("word"); 结果将是“String Version”。为什么 ?为什么没有编译错误?

最佳答案

JAVA 规范说在这种情况下,将调用最具体的函数。由于 String 是 Object 的子类型 - 将调用第二个方法。如果将 Object 更改为 StringBuffer - 没有特定方法,因为 StringBuffer 不是 String 的子类型,反之亦然。在这种情况下,编译器不知道要调用哪个方法 - 因此会出现错误。

关于java - 这个java代码的解释是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033607/

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