Ответ
Можно, но это приведет к логической ошибке. Без переопределения используется реализация Object.equals(), которая сравнивает ссылки (как оператор ==), а не содержимое объектов.
Пример проблемного поведения:
class Person {
String name;
Person(String name) { this.name = name; }
// equals() НЕ переопределен
}
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false! Объекты разные, хоть имена одинаковы
System.out.println(p1 == p2); // false (то же самое сравнение)
Почему это важно? Коллекции, такие как HashMap, HashSet, и методы вроде List.contains() полагаются на equals() для корректной работы. Без переопределения два логически равных объекта будут считаться разными.
Правило: Если вы переопределяете equals(), вы должны также переопределить hashCode(), чтобы соблюдать контракт между этими методами (объекты, равные по equals(), должны иметь одинаковый hashCode()).