четверг, 14 июля 2011 г.

с. 262 (Черновик) Внутренние классы

"В языке C++ есть вложенные классы (nested)."
"Вложение представляет собой отношение между классами, а не между объектами. Объект [родительского] класса не содержит подобъектов [вложенных классов]."
А разве с внутренними классами в Java не так же? Разве родительский объект должен содержать объекты его внутренних классов?
-----
"У вложения классов есть два преимущества: управление именами (name control) и управление доступом (access control)."
"В языке Java ... управление именами осуществляют пакеты."
Методы родительского класса имеют доступ к полям и методам вложенного класса, но не наоборот.
-----
"... внутренние классы в языке Java имеют ещё одно достоинство, которое делает их более полезными, чем вложенные классы в языке C++. Объект внутреннего класса содержит неявную ссылку на объект внешнего класса, который создал его. С помощью этой ссылки объект внутреннего класса получает доступ ко всем полям и методам внешнего объекта.
Эту дополнительную ссылку не имеют лишь статические внутренние классы. Именно они представляют собой полный аналог вложенных классов языка C++."

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

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