Метод
boolean equals(Object other);
перегружает метод базового объекта;этот метод
boolean equals(Point other);
не имеет.Поэтому, когда вы вызываете Object.equals()
, что вы делаете во втором случае, вы окажетесь в первой предоставленной вами реализации.Переопределение Object.equals()
- это то, что вам нужно сделать как минимум;другие реализации являются необязательными, и, на мой взгляд, могут вводить в заблуждение.
Следует аннотировать переопределения с помощью @Override
;это может помочь избежать путаницы в том, действительно ли это подразумеваемое переопределение.