gpt4 book ai didi

具有父类(super class)和子类签名的 Java 2 函数 - 尽 pipe 类的类型是子类,但仍选择父类(super class)

转载 作者:行者123 更新时间:2023-11-30 02:51:51 24 4
gpt4 key购买 nike

我有以下代码:

public class Main {

public boolean equals(String other){
return other == new Object();
}

public boolean equals(Object other){
return other == new Object();
}

public static void main(String[] args){
String s = "";
Object b1 = new Main();
System.out.println(b1.equals(s));

}

}

据我所知,equals方法选择应该这样进行:在编译时,将选择签名,并且从s开始是编译时类型(例如 type ),参数为 String 的方法应该选择,并且因为 b1Main 的一个实例然后我们将输入我们的Main实现equals而不是Object的。

但是,在调试时我看到我输入了 Main使用 Object 类型的参数实现.

我看过那两篇文章:
Overloaded method selection based on the parameter's real type - 没有解释我的情况,而是解释 s 类型的情况本来就是对象。

https://stackoverflow.com/a/8356435/4345843 - 据我所知,这个答案如果属实,则支持我的理论。

很乐意提供解释。

最佳答案

这是因为您将 Main 实例分配给 Object 变量。 Object 不包含 equals(String) 方法,因此选择唯一适合的方法 - equals(Object)

关于具有父类(super class)和子类签名的 Java 2 函数 - 尽 pipe 类的类型是子类,但仍选择父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38410226/

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