НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
1256 of 1310 menu

Ключевое слово nested

Ключевое слово nested применяется для объявления вложенных классов в Kotlin. Вложенные классы не имеют доступа к членам внешнего класса, если только эти члены не объявлены с модификатором companion. Для создания вложенного класса используется синтаксис class Outer { nested class Inner }.

Синтаксис

class Outer { nested class Nested { // тело вложенного класса } }

Пример

Создадим внешний класс Car с вложенным классом Engine:

class Car { nested class Engine { fun start() { println("Engine started") } } }

Пример

Создадим экземпляр вложенного класса:

val engine = Car.Engine() engine.start()

Результат выполнения кода:

String "Engine started"

Пример

Попытка доступа к членам внешнего класса из вложенного класса:

class Car(val model: String = "Sedan") { nested class Engine { fun showModel() { // println(model) - ошибка компиляции! // Вложенный класс не имеет доступа к членам внешнего класса } } }

Пример

Доступ к companion object из вложенного класса:

class Car { companion object { const val BRAND = "Toyota" } nested class Engine { fun showBrand() { println("Brand: $BRAND") } } }

Результат выполнения кода:

val engine = Car.Engine() engine.showBrand()
String "Brand: Toyota"

Пример

Вложенные классы могут содержать свойства и методы:

class Computer { nested class Processor { val cores = 8 val frequency = 3.5 fun getInfo(): String { return "$cores cores, ${frequency}GHz" } } }
val processor = Computer.Processor() println(processor.getInfo()) println("Cores: ${processor.cores}")

Результат выполнения кода:

String "8 cores, 3.5GHz" String "Cores: 8"

Смотрите также

  • ключевое слово open,
    которое разрешает наследование и переопределение
  • ключевое слово override,
    которое используется для переопределения методов и свойств
  • модификатор abstract,
    который объявляет абстрактные классы и члены
  • модификатор interface,
    который используется для объявления интерфейсов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить