В Kotlin возможно ли объявить sealed class с модификатором внутреннего класса?

В Kotlin можно объявить sealed class, а внутренние классы внутри неё могут иметь модификатор inner.

Короткий ответ

Что ответить на собеседовании

В Kotlin можно объявить sealed class, а внутренние классы внутри неё могут иметь модификатор inner. Однако, чтобы класс был inner, он должен быть объявлен внутри другого класса (не в файле напрямую), и иметь доступ к экземпляру внешнего класса.

Подробный разбор

Ответ с пояснениями

В Kotlin можно объявить sealed class, а внутренние классы внутри неё могут иметь модификатор inner. Однако, чтобы класс был inner, он должен быть объявлен внутри другого класса (не в файле напрямую), и иметь доступ к экземпляру внешнего класса.

Пример:

sealed class Outer {
    inner class Inner : Outer() {
        fun accessOuter() = this@Outer
    }
}

Если sealed класс объявлен на верхнем уровне, то внутренние классы не могут быть inner, так как нет внешнего экземпляра. В этом случае внутренние классы будут просто вложенными (nested), без доступа к внешнему объекту.

Таким образом, модификатор inner возможен, если sealed класс является внешним классом, а вложенный класс объявлен внутри него с inner.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку