Sobes.tech
Junior — Middle
144

Bude metóda equals vracať true pri porovnávaní objektov rôznych tried, ak sa ich polia zhodujú?

Odpoveď od AI

sobes.tech AI

Метод equals в Java по умолчанию (в классе Object) сравнивает ссылки на объекты, то есть возвращает true только если это один и тот же объект.

Если метод equals переопределён, то поведение зависит от реализации. Обычно в реализации equals проверяют:

  1. Является ли объект того же класса (или совместимого типа).
  2. Совпадают ли значения ключевых полей.

Если объекты разных классов, то обычно equals возвращает false, даже если поля совпадают, чтобы сохранить симметрию и консистентность.

Пример:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && Objects.equals(field2, other.field2);
}

Здесь getClass() != obj.getClass() гарантирует, что объекты разных классов не считаются равными, даже если поля совпадают.