覆蓋 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