Методы equals
и hashCode
будут (как и любой другой метод) унаследованы от суперкласса.
Если они все еще подходят для подкласса, вы можете оставить это как есть.
В JDK есть примеры для этого:
Stack
расширяет Vector
расширяет AbstractList
Stack
просто наследует equals
от Vector
Vector
переопределяет equals
из AbstractList
, но только для добавления synchronized
, а затем просто вызывает super.equals
. ArrayList
также расширяет AbstractList
, но этопереопределяет equals
реализацией, которая следует той же логике, но может быть более эффективной, потому что она знает, что по крайней мере один из участников является ArrayList
.
Но имейте в виду, что
- теперь вы будете сравнивать экземпляры Super <-> Super, Super <-> Sub, Sub <-> Sub во всех комбинациях с одним и тем же фрагментом кода
- , например
this.getClass()
может возвращать неожиданные вещи, когда this
действительно может быть подклассом
Если это вызывает проблемы в вашейЛогика сравнения зависит от вас.