Sobes.tech
Назад к вопросам
Junior — Middle
85

Каким образом осуществляется сравнение экземпляров обычных классов в объектно-ориентированном программировании?

Ответ от нейросети

sobes.tech AI

В объектно-ориентированном программировании сравнение экземпляров обычных классов обычно осуществляется с помощью метода equals() (в Java/Android) или переопределения метода equals() и hashCode().

По умолчанию метод equals() сравнивает ссылки на объекты (то есть проверяет, указывают ли переменные на один и тот же объект в памяти). Чтобы сравнивать содержимое объектов, нужно переопределить этот метод.

Пример переопределения equals() в классе:

public class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && name.equals(person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

Таким образом, сравнение экземпляров класса зависит от реализации метода equals(), и без переопределения сравниваются ссылки, а не содержимое.