1. public boolean equals(Object obj)
1.1. - определяет, являются ли объекты одинаковыми.
1.1.1. рефлексивность: для любой объектной ссылки x, вызов x.equals(x) возвращает true
1.1.2. симметричность: для любых объектных ссылок x и y, вызов x.equals(y) возвращает true тогда и только тогда, если вызов y.equals(x) возвращает true
1.1.3. транзитивность: для любых объектных ссылок x, y и z, если x.equals(y) возвращает true и y.equals(z) возвращает true, тогда вызов x.equals(z) должен вернуть true
1.1.4. непротиворечивость: для любых объектных ссылок x и y, многократные последовательные вызовы x.equals(y) возвращают одно и то же значение (либо всегда true либо всегда false)
1.1.5. для любой не равной null объектной ссылки x, вызов x.equals(null) должен вернуть значение false
2. public int hashCode()
2.1. - возвращает хеш-код для объекта. Хеш-код -это целое число, которое с очень большой вероятностью является уникальным для данного объекта.
2.1.1. в одном запуске программы, для одного объекта, при вызове метода hashCode(), должно возвращаться одно и то же int значение, если между этими вызовами НЕ были затронуты данные, используемые для проверки объектов на идентичность в методе equals().
2.1.2. если два объекта идентичны, то есть вызов метода equals(Object) возвращает true, тогда вызов метода hashCode() у каждого из этих двух объектов должен возвращать одно и то же значение
2.1.3. если два объекта различны, то есть вызов метода equals(Object) возвращает false, тогда различие их хеш-кодов желательно, но НЕ обязательно.
3. public String toString()
3.1. - возвращает строковое представление объекта.
3.1.1. В классах-наследниках этот метод может быть переопределен для получения более наглядного пользовательского представления объекта
4. wait(), notify(), notifyAll()
4.1. - эти методы используются для поддержки многопоточности.
4.1.1. Они определены с атрибутом final и НЕ могут быть переопределены в классах-наследниках.
5. protected void finalize() throws Throwable
5.1. - этот метод вызывается Java-машиной перед тем, как garbage collection очистит память, занимаемую объектом.
5.1.1. В классах- наследниках этот метод может быть переопределен для проведения действий по освобождению ресурсов
6. protected native Object clone() throws CloneNotSupportedException
6.1. - создает копию объекта.
6.1.1. Для того, что бы им можно было воспользоваться, объект должен реализовывать интерфейс Cloneable.
6.1.2. Реализован т.о., что будут скопированы только базовые типы и ссылки на объекты. Если же потребуется "глубокое " копирование, то нужно скопировать не только ссылки на объекты, но и создать копии объектов - в классах-наследниках метод clone() можно переопределить.