覆盖 Java 中的 equals()

Lovey Arora 2023年10月12日
覆盖 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