Sobes.tech
Назад к вопросам
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 — имеет.