вторник, 26 апреля 2011 г.

с. 251 (Черновик) Свойства интерфейсов

"... оператор instanceof проверяет, принадлежит ли объект заданному классу. Однако с помощью этого оператора можно также проверять, реализует ли объект заданный интерфейс."
Одна из тех простых вещей, которая часто вылетает из головы.
Вопрос: Как проверить, реализует ли класс заданный интерфес?
Ответ:  С помощью оператора instanceof.
-----
"Аналогично классам интерфейсы также могут образовывать иерархию наследования."
Вопрос: Может ли один интерфейс наследовать другой интерфейс?
Ответ: Да.
Вопрос: Может ли один интерфейс наследовать несколько других интерфейсов?
Ответ: Да.
-----
"... все методы в интерфейсе автоматически объявляются открытыми. Аналогично константы в интерфейсе всегда являются открытыми статическими и терминальными."
А разве константа может быть не терминальной?
Вопрос: Как можно объявить в интерфейсе переменную?
Ответ: Никак. В интерфейсе можно объявить только константу.
Вопрос: Какими характеристиками обладают объявленные в интерфейсе свойства?
Ответ: Они являются открытыми статическими терминальными.
-----
"В некоторых интерфейсах объявляются только константы и ни одного метода."
При наследовании таких интерфейсов можно использовать объявленные в них константы напрямую, без указания имени интерфейса.
-----
"... любой класс может реализовывать несколько интерфейсов."
-----

пятница, 22 апреля 2011 г.

с. 250 (Черновик) Сравнение экземпляров класса и подкласса

"Если вызов y.compareTo(x) возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также должен возбуждать её."
Или, перефразируя, если вызов y.compareTo(x) НЕ возбуждает исключительную ситуацию, то и вызов x.compareTo(y) также НЕ должен возбуждать её.

Вопрос: В чём состоит существенная разница реализации метода сравнения двух объектов, находящихся в одной цепочке наследования, в родительском и дочернем классах?
Ответ: В дочернем классе необходимо реализовывать полную проверку объектов, т.е. с учётом всех родительских классов, для предотвращения возникновения исключительных ситуаций.

понедельник, 4 апреля 2011 г.

с. 249 Стандартное требование к реализации метода compareTo

 "В языке Java есть стандартное требование ..."
Стандартное требование к реализации метода compareTo ? Не ко всем же методам вообще...
-----
"... если поменять параметры метода compareTo местами, знак возвращаемого числа (но не обязательно его фактическое значение) также должен измениться на противоположный."
Чего это автор так прицепился к Comparable? Глава ведь не о возможностях сравнения объектов...

Вопрос: С помощью какой формулы можно убедиться в правильности реализации метода compareTo?
Ответ: sgn(x.compareTo(y)) = - sgn(y.compareTo(x)).

с. 248 (Черновик)

Куча опечаток... Хорошо, что здесь они ни на что не влияют.
-----

с. 247 (Черновик)

"... компилятор выдаст предупреждение, что вы пытаетесь понизить уровень доступа."
Вопрос: Какие модификаторы видимости можно применять к методам, реализующим методы интерфейса?
Ответ: public.



с. 246 (Черновик)

Вопрос: Является ли интерфейс классом?
Ответ: Нет.

Вопрос: Какие модификаторы видимости можно применять для методов интерфейса?
Ответ: public.

Вопрос: Если в интерфейсе не указан модификатор видимости для метода, какой модификатор будет применён по-умолчанию?
Ответ: public.


"Метод sort класса Array позволяет упорядочивать массив объектов при одном условии: объекты должны принадлежать классам, реализующим интерфейс Comparable."
"Интерфейсы могут объявлять константы".

"Чтобы объявить, что класс реализует интерфейс, используется ключевое слово implements."