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