Middle
82
questionbank

Что такое вложенные (nested) и внутренние (inner) классы в Kotlin?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Вложенный класс (nested) не имеет доступа к членам внешнего класса. Он является просто классом, объявленным внутри другого.

kotlin

Внутренний класс (inner) имеет доступ к членам внешнего класса, включая приватные. Для этого используется ключевое слово inner. Экземпляр внутреннего класса всегда связан с экземпляром внешнего класса.

kotlin

Основные различия:

ОсобенностьВложенный класс (Nested)Внутренний класс (Inner)
Доступ к внешнемуНетДа (через экземпляр внешнего класса)
Связь с экземпляромНе связан с экземпляром внешнего классаСвязан с экземпляром внешнего класса
ОбъявлениеНе требует ключевого слова (по умолчанию nested)Требует ключевое слово inner
ИспользованиеМожет быть статическим аналогом (в контексте Java)Не может быть статическим
Создание экземпляраOuter.Nested()Outer().Inner()