Методы c переменным количеством аргументов
31
Перегрузка конструкторов
32
Перегрузка конструкторов
33
Перегрузка конструкторов - наследование
34
Перегрузка конструкторов –
вызов родительского конструктора
•Вызов родительского конструктора выполняется с помощью ссылки super в первой строке дочернего конструктора.
•Может быть вызван любой родительский конструктор с аргументами с помощью ссылки super.
•Если в конструкторе нет явного вызова родительского конструктора, то компилятор добавит неявный вызов родительского конструктора super() без аргументов,
который может быть и конструктором по умолчанию.
•Если родительский класс содержит разные описания конструкторов, но среди них нет конструктора без аргументов, то это вызовет ошибку компиляции.
35
Перегрузка конструкторов –
вызов родительского конструктора
36
Конструирование и инициализация объектов
Прежде всего происходит выделение памяти и инициализация
параметров по умолчанию.
Инициализация экземпляра объекта состоит из следующих
шагов, выполняющихся рекурсивно:
1.Привязка(биндинг) значений к переменным
2.Если присутствует явный вызов this(), то переходим к шагу №5.
3.Рекурсивно явно или неявно вызываются все родительские конструкторы (исключая класс Object).
4.Выполняется вся явная инициализация переменных.
5.Выполняются операторы тела конструктора.
37
Конструирование и инициализация объектов
38
Класс Object
39
Метод equals
•Оператор “==” срабатывает, если две ссылки являются идентичными (то есть указывают на один объект).
•Метод equals срабатывает, ели объекты равны, но необязательно идентичны.
•Для класса Object – это одно и то же! (метод equals
использует в своей реализации ==)
•Разработчик может переопределять метод equals для учета специфики проверки конкретных объектов.
•При переопределении equals вы обязательно должны переопределить метод hashcode.
40
