我有一個擁有2個實例變量的超類(比如int a
和int b
)和 現在已經決定我需要在我的子類int c
中有一個實例變量。Overriden等於和超類的哈希碼方法。我是否爲子類做
我已經覆蓋超類equals和hashCode方法來考慮 對象/值的相等性。我還覆蓋了超類toString,以給出表示對象狀態(變量值)的字符串 。
基於以上的事實我現在有一個實例變量int下,在我的子類 我在想,如果我
- 需要重寫子類中的toString方法,或者這是一種沒有沒有因爲我在超類中有一個有效的可繼承的toString方法(已重寫),可用於子類字符串表示?
- 需要重寫子類中的equals方法。通過調用superclass equals方法並在調用後爲我的子類實例變量添加比較代碼,還是需要新的實現,可以完成 ?我認爲後者?
- 我打算重寫子類中的hashCode方法。再次調用超類hashCode方法最好有一個新的實現?我打算 將子類equals方法中的a,b和c與另一個對象進行比較,並在子類hashCode方法中爲b和c創建哈希碼?這是要走還是要求我只考慮子類equals和hashcode方法中的變量c?
我有一個瞭解各種不同的資源,包括有效的Java布洛赫(第3章),但無法找到這個問題的答案我有上述問題
您的equals方法違反Object.equals強制的symmetry屬性,可能不應使用它。 superclass.equals(子類)將返回true,而subclass.equals(超類)將返回false。 –
你可以用'c'替換'new Integer(c).hashCode()'。 –