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