Ответ
Внутренние классы (inner classes) в Kotlin/Java позволяют логически группировать классы, которые используются только в одном месте, улучшая инкапсуляцию и читаемость кода.
Типы внутренних классов:
- Обычный inner класс – имеет доступ к членам внешнего класса.
- Nested (static) класс – не имеет доступа к внешнему классу.
- Локальный класс – объявляется внутри метода.
- Анонимный класс – реализует интерфейс/наследует класс на лету.
Пример inner класса:
class Outer {
private val outerField = "External"
inner class Inner {
fun printField() = println(outerField)
}
}
// Использование:
val outer = Outer()
val inner = outer.Inner()
inner.printField() // "External"
Плюсы:
- Лучшая организация кода.
- Доступ к приватным полям внешнего класса (для non-static inner).
- Сокрытие реализации (например,
ViewHolderвRecyclerView).
Минусы:
- Увеличивает связанность кода.
- Может привести к утечкам памяти (если inner класс держит ссылку на внешний).