Java で equals()をオーバーライドする

Lovey Arora 2023年10月12日
Java で equals()をオーバーライドする

Java では、オーバーライドとは、子クラスまたはサブクラスが親クラスで宣言されているのと同じメソッドの実行を行う場合です。

equals() メソッドは 2つの文字列を比較します。1つの文字列オブジェクトのデータが他のオブジェクトと同じである場合は True 値を返し、それ以外の場合は False を返します。equals() メソッドをオーバーライドするときは、hashtag() メソッドもオーバーライドすることを常にお勧めします。

このチュートリアルでは、Java で equals をオーバーライドする方法を示します。

オブジェクトの値が等しいかどうかを確認するには、equals() メソッドを使用します。Java のクラスはオブジェクトクラスからのみ継承されるため、クラスでこのメソッドをオーバーライドして、2つのオブジェクトが同じデータを持っているかどうかを確認できます。

@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() メソッドによって実行され、ブール式を使用して 2つの複雑なオブジェクトを比較します。次に、オブジェクトがそれ自体と比較される場合、True を返します。次に、オブジェクトが complex のインスタンスであるかどうかを確認したため、False が返されます。ここで、データメンバーを比較できるように、オブジェクトを複合体にタイプキャストします。最後に、複雑なクラスをテストするためのドライバークラスを作成します。

関連記事 - Java Override