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