equals方法實現了等價關係,一般要滿足下列條件
自反性(reflexive)
對稱性(symmetric)
傳遞性(transitive)
一致性(consistent)
對於任意的非空引用值x,x.equals(null)一定返回false.
要實現高質量equals方法,可如下做:
使用==操作符檢查「實參是否為指向物件的乙個引用」 ,如果是,返回true;
使用instanceof操作符檢查「實參是否為正確的型別」,
如果不是,返回false;
把實參轉換到正確的型別
對於該類中每乙個"關鍵(significant)"域,檢查實參中的域與當前物件中對應的域值是否匹配。
如果所有的測試都成功,則返回true;
例如:class programer
//必須覆蓋hashcode()方法
public int hashcode()
public boolean equals(object obj)
}當編寫完成了equals方法之後,應該滿足:它是否是對稱的、傳遞的、一致的?
注意:1)當你改寫equals的時候,總是要改寫hascode方法
2)不要將equals宣告中的object物件替換為其它的型別
當你的equals不能正常工作時,看看是不是犯了下述例子的錯誤。
public boolean equals(myclass o)
這種方式並不是覆蓋object類的equals方法
Java方法重寫規則
方法重寫的規則要遵循 兩同兩小一大 規則 兩同 即方法名相同,形參列表相同 兩小 指的是子類方法返回值型別應比父類方法返回值型別更小或相等,子類方法宣告丟擲的異常類應比父類方法宣告丟擲的異常類更小或者相等 一大 指的是子類方法的訪問許可權應比父類方法的訪問許可權更大或相等。注意 覆蓋方法和被覆蓋的方...
YII的重寫規則
如果不用內建sever去開發專案,輸入 會報object 則按照下列步驟即可使用安裝開發環境 yii寫的 根目錄在web下 第一步 要在httpd.conf中開啟apache的rewrite模組 第二步 在web下建立.htaccess檔案,檔案內容如下 ifmodule mod rewrite.c...
Java重寫的規則
引數列表必須完全與被重寫方法的相同 返回型別必須完全與被重寫方法的返回型別相同 訪問許可權不能比父類中被重寫的方法的訪問許可權更高。例如 如果父類的乙個方法被宣告為 public,那麼在子類中重寫該方法就不能宣告為protected。父類的成員方法只能被它的子類重寫。宣告為final的方法不能被重寫...