gpt4 book ai didi

Java 重载对象

转载 作者:行者123 更新时间:2023-11-29 04:11:02 25 4
gpt4 key购买 nike

我想知道为什么第二个打印语句会产生“一个实现”作为输出,下面是java代码

    class Point {
public boolean equals(final Object anObject) {
System.out.println("One implementation.");
return false;
}

public boolean equals(final Point aPoint) {
System.out.println("Another implementation.");
return false;
}
}

public class Main {
public static void main(final String[] args) {
final Point p1 = new Point();
final Point p2 = new Point();
final Object o = p1;
System.out.println(p1.equals(p2));
System.out.println(o.equals(p2));
System.out.println(p1.equals(o));
}
}

输出:-

另一种实现方式

错误

一个实现{关注}

错误

一个实现

错误

最佳答案

方法

boolean equals(Object other);

重载基本对象方法;这个方法

boolean equals(Point other);

没有。因此,当您调用 Object.equals() 时(这是您在第二种情况下所做的),您最终将进入您提供的第一个实现。覆盖 Object.equals() 是您至少需要做的;其他实现是可选的,在我看来,容易产生误导。

应使用 @Override 注释覆盖;这可能有助于避免混淆所谓的覆盖是否真的存在。

关于Java 重载对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55133236/

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