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

37 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Если класс ни от чего не наследуется, то он по умолчанию отнаследован от класса `Object`
```Java
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`