Назад к вопросам
Junior — Middle
68
Чем отличается объявление внутреннего класса от вложенного класса в Kotlin?
Компании, где спрашивали
RedLab
Ответ от нейросети
sobes.tech AI
В Kotlin есть два типа классов, вложенных в другой класс: вложенный класс (nested class) и внутренний класс (inner class).
-
Вложенный класс (nested class) — это класс, объявленный внутри другого класса без ключевого слова
inner. Такой класс не имеет доступа к членам внешнего класса. -
Внутренний класс (inner class) — объявляется с ключевым словом
inner. Он хранит ссылку на экземпляр внешнего класса и может обращаться к его свойствам и методам.
Пример:
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
inner class Inner {
fun foo() = bar
}
}
fun main() {
val nested = Outer.Nested()
println(nested.foo()) // 2
val inner = Outer().Inner()
println(inner.foo()) // 1
}
Здесь Nested не имеет доступа к bar, а Inner — имеет.