Кто может быть наследником Sealed Class

«Кто может быть наследником Sealed Class» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Sealed class позволяет ограничить иерархию наследования. Её наследниками могут быть только классы, объявленные в том же файле или вложенные классы (включая data, object и обычные классы).

Пример:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result()
}

Ключевые ограничения:

  • Наследники должны быть объявлены в том же файле.
  • Можно использовать data class, object или обычные классы.
  • В Kotlin 1.5+ разрешены наследники в разных файлах, но в одном модуле (с модификатором sealed).