覆盖 Java 中的 equals()

Lovey Arora 2021年10月2日 2021年7月1日
覆盖 Java 中的 equals()

在 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,以便我们可以比较数据成员。最后,我们制作驱动程序类来测试复杂的类。

相关文章 - Java Override