Files
roma-dxunvrs 0e6e583e6d
deploy / Pull and Restart (push) Successful in 17s
refactor: wiki links -> md links
2026-09-22 08:52:23 +03:00

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