В классе Object метод equals() является просто сравнением двух ссылок, именно по этому мы и переопределяем его в пользовательском классе. Но сравнения полей 2 разных объектов внутри нашего equals() мы сравниваем опять же через equals(). Собственно вопрос какой метод вызывается внутри нашего, ведь в стандартной реализации 2 поля разных объектов никак не могут быть равны согласно equals() по умолчанию? public boolean equals(Object obj) { return o.equals(obj.o); <--- Реализация этого метода интересует. }