В этом уроке мы рассмотрим вложенные классы.
Вложенные классы
Классы могут быть вложенными один в другой:
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
val demo = Outer.Nested().foo() // == 2
Внутренние классы
Вложенный класс может быть помечен как innerдля доступа к элементам внешнего класса. Внутренние классы содержат ссылку на объект внешнего класса:
class Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}
val demo = Outer().Inner().foo() // == 1
Из примера видно, что класс Inner имеет доступ к переменным класса Outer.
Источник: Nested Classes
