Это не обязательно, но умная вещь.
Если вы создаете фреймворк, а другой разработчик, помимо того, что вы собираетесь использовать объект, вы должны переопределить == и! =.Таким образом, когда разработчик может использовать его, он, по крайней мере, имеет правильную логику для сравнения двух объектов, а не просто одинаковых в памяти.
Я бы гарантировал, что ваш == &! = Do вызовет ваш метод equals.