Files
roma-dxunvrs 4fabe16272 04.09
2026-09-04 22:55:43 +03:00

2.6 KiB
Raw Blame History

Если класс ни от чего не наследуется, то он по умолчанию отнаследован от класса Object

public class Empty {}

// на самом деле
public class Empty extends Object {
	public Empty() {
		super();
	}
}

Методы Object

  1. public String toString() - строковое представление объекта.
    • Реализация по умолчанию: ИмяКласса@хэшкод
    • Переопределять для красивого вывода
    • Record автоматически переопределяет
  2. public boolean equals(Object obj) - эквивалентность двух обхектов
    • == - сравнивает ссылки
    • По умолчанию equals тоже сравнивает ссылки, так что лучше переопределить
    • Правила, которые нельзя нарушать:
      1. Рефлексивность
      2. Симметричность
      3. Транзитивность
      4. Согласованность (при очередном вызове результат не должен поменяться)
      5. Сравнение с null: x.equals(null) == null // ВСЕГДА false
  3. public int hashCode() - числовое значение для эффективной работы хэш-таблиц
    • Реализация по умолчанию: вычисление на основе адреса
    • Используется в HashMap
    • Между equals и hashCode должен соблюдаться определенный Контракт между equals и hashCode
  4. public final native Class<?> getClass() - возвращает метаданные объекта во время выполнения
    • Основа для Reflection API
  5. protected native Object clone() thows CloneNotSupportedException - создает и возвращает копию объекта
    • По умолчанию: shallow копия
    • Условие использования: реализация Cloneable
    • Не очень удачный метод в общем и целом
  6. public final void wait(), public final native void notify(), public final native void notifyAll() - для работы с многопоточностью (подробнее Взаимодейтсвие между потоками)
  7. protected void finalize() throws Thowable - метод вызывался GC перед удалением объекта, сейчас @Deprecated