第十二週總結

對上週考試中重寫equals方法的理解,

public boolean equals(Object object) {
    if (this == object) return true;
    if (object == null || getClass() != object.getClass()) return false;
    if (!super.equals(object)) return false;
    Book book = (Book) object;
    return java.util.Objects.equals(name, book.name) &&
            java.util.Objects.equals(publisher, book.publisher);
}

        1、第一行是equals()方法的方法頭,參數爲Object object,Object類是所有類的直接或間接父類,因此 Object + 參數名稱 代表任何繼承Object的實例,即任何一個對象。使形參的範圍更廣,使用更便利。

        2、第二行是對兩對象的地址進行比較,其中 this 指當前對象自身,即誰調用 equals 誰便是  this 。object 是一個形參,下面會賦值給它。如果兩者地址相等,則兩個對象一定相等。

        3、第三行是對兩對象所屬類進行比較,其中 getclass()是得到這個對象的類型類(舉例來說就是:獲得int long boolean等等這些類型)。 getclass()  方法作用是:獲得了(類)Class,進而通過返回的Class對象獲取Person的相關信息。如果object指向一個空對象或者兩個對象類型不同,則可以直接判斷出兩對象不等。

        4、第四行是如果它的父類和object也不等的話就可判讀兩對象不等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章