пятница, 29 июля 2011 г.

Глава 5. Наследование.

"Поскольку конструктор подкласса не имеет доступа к закрытым полям суперкласса, он должен инициализировать их, вызывая другой конструктор с помощью ключевого слова super. Вызов, содержащий обращение super, должен быть первым оператором в конструкторе подкласса."

"Способность переменной ссылаться на объекты, имеющие разные фактические типы, называется полиморфизмом. Автоматический выбор нужного метода во время выполнения программы называется динамическим связыванием (dynamic binding)."

Метод equals()

"Метод equals() класса Object проверяет, эквивалентны ли два объекта. Однако в ряде случаев эквивалентными должны считаться объекты одного типа, имеющие одинаковые состояния."
"Чтобы объекты были эквивалентны, они как минимум должны быть объектами одного и того же класса."
[А как же с наследованием? Могут же быть эквивалентными объект класса-родителя и объект класса-наследника.]
"Определяя метод equals() для подкласса, надо сначала вызвать тот же метод суперкласса. Если проверка даст отрицательный результат, объекты не могут быть идентичными." [Возник такой вопрос. Почему при обращении из метода объекта-наследника к методу обекта-родителя, ссылка this в этом методе ссылается на объект-наследник ?] [Ссылка super, получается, работает как фильтр, отсекая всё неродительское. Другого объекта, на который ссылалась бы ссылка super, не существует. Это всё тот же наш текущий объект.]

Комментариев нет:

Отправить комментарий