В этом уроке мы рассмотрим вложенные классы.
Вложенные классы
Классы могут быть вложенными один в другой:
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