Урок 9

Класс Object


1. Назначение класса

В Java определен один специальный класс, называемый Object. Все остальные классы являются подклассами, производными от этого класса.

Методы класса Object:

  1. protected Object clone() - создает новый объект, не отличающийся от клонируемого.
  2. public boolean equals(Object obj) - определяет, равен ли один объект другому.
  3. protected void finalize() - вызывается перед удалением неиспользуемого объекта.
  4. public final Class<?> getClass() - получает класс объекта во время выполнения.
  5. public int hashCode() - возвращает хеш-код, связанный с вызывающим объектом.
  6. public final void notify() - возобновляет исполнение потока, ожидающего вызывающего объекта.
  7. public final void notifyAll() - возобновляет исполнение всех потоков, ожидающих вызывающего объекта.
  8. public String toString() - возвращает символьную строку, описывающую объект.
  9. public final void wait() - ожидает другого потока исполнения.
  10. public final void wait(long timeout) - ожидает другого потока исполнения.
  11. public final void wait(long timeout, int nanos) - ожидает другого потока исполнения.

2. Метод equals()

Для проверки эквивалентности в классе Object существует метод equals(), который сравнивает содержимое объектов и выводит значение типа boolean. true - если содержимое эквивалентно, и false — если нет.

При сравнение объектов, операция “==” вернет true лишь в одном случае — когда ссылки указывают на один и тот же объект. В данном случае не учитывается содержимое полей.

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

Пример 1. Использование equals()

public class Person {
    private String fullName;
    private int age;
    private boolean retired;
    ...

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        Person person = (Person) o;

        if (getAge() != person.getAge()) {
            return false;
        }
        if (isRetired() != person.isRetired()) {
            return false;
        }
        return getFullName() != null
                ? getFullName().equals(person.getFullName())
                : person.getFullName() == null;

    }
}
public class PersonDemo2 {
    public static void main(String[] args) {
        Person person1 = new Person("Петров Иван Иванович", 56, false);
        Person person2 = new Person("Петров Иван Иванович", 56, false);
        Person person3 = person1;

        System.out.println(person1 == person2);
        System.out.println(person1 == person3);

        System.out.println(person1.equals(person2));
        System.out.println(person1.equals(person3));
    }
}

3. Метод toString()

Возвращает символьную строку, описывающую объект.

Пример 2. Использование toString()

public class Person {
    private String fullName;
    private int age;
    private boolean retired;

    ...
    @Override
    public String toString() {
        return "Person{"
                + "fullName='" + fullName + '\''
                + ", age=" + age
                + ", retired=" + retired
                + '}';
    }
}
public class PersonDemo4 {
    public static void main(String[] args) {
        Person person = new Person("Петров Иван Иванович", 56, false);
        System.out.println(person);
    }
}


0 comments
Leave your comment: