Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktOpObIC 23 of 123 menu
◀ ▶

Класс внутри класса в Kotlin

Класс можно объявить внутри другого класса. Такой вложенный класс не видит свойства внешнего объекта. К нему обращаются через имя внешнего типа:

class Log { class Line(val text: String) } fun main() { val line = Log.Line("ok") println(line.text) }

Если вложенному классу нужны поля конкретного внешнего объекта, его помечают inner. Тогда у внутреннего класса есть ссылка на тот экземпляр, у которого его создали:

class Order(val id: Int) { inner class Line(val title: String) { fun label(): String { return "$id $title" } } } fun main() { val order = Order(7) val line = order.Line("pen") println(line.label()) }

Когда свойство внутреннего класса называется так же, как свойство внешнего, внешнее читают через this@ИмяКласса:

class Box(val name: String) { inner class Item(val name: String) { fun both(): String { return "${this@Box.name} $name" } } }

Сделайте класс Catalog с вложенным классом Item: название и цена. Создайте Item через имя Catalog и выведите название.

Сделайте класс Cart с названием и классом Row с модификатором inner и полем title. Метод Row.tag() возвращает название корзины и title. Создайте корзину "main", строку "pen" и выведите tag().

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить