覆盖 Java 中的 equals()
Lovey Arora
2023年10月12日
在 Java 中,覆盖是指子类或子类执行与父类中声明的方法相同的方法。
equals()
方法比较两个字符串。如果一个字符串对象的数据与另一个相同,则返回 True 值,否则返回 False。当我们覆盖 equals()
方法时,总是建议也覆盖 hashtag()
方法。
本教程将演示如何在 Java 中覆盖 equals。
为了检查对象中的值是否相等,我们使用 equals()
方法。我们可以在类中重写这个方法来检查两个对象是否有相同的数据,因为 Java 中的类只是从对象类继承的。
@Override
告诉编译器在编译时覆盖。
请参考下面给出的代码:
class Complex {
private double ab, cd;
public Complex(double ab, double cd) {
this.ab = ab;
this.cd = cd;
}
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Complex)) {
return false;
}
Complex c = (Complex) o;
return Double.compare(ab, c.ab) == 0 && Double.compare(cd, c.cd) == 0;
}
}
public class Main {
public static void main(String[] args) {
Complex c1 = new Complex(12, 13);
Complex c2 = new Complex(12, 13);
if (c1.equals(c2)) {
System.out.println("Equal ");
} else {
System.out.println("Not Equal ");
}
}
}
输出:
Equal
在上面的例子中,重写是通过 equals()
方法完成的,以在布尔表达式的帮助下比较两个复杂的对象。然后,如果对象与自身进行比较,则返回 True。然后,我们检查了对象是否是 complex 的实例,因此返回 False。现在,我们将对象类型转换为 complex,以便我们可以比较数据成员。最后,我们制作驱动程序类来测试复杂的类。