Sobes.tech
Назад к вопросам
Junior — Middle
89

Какие основные отличия между классами, объявленными с использованием ключевых слов sealed и abstract?

Ответ от нейросети

sobes.tech AI

Основные отличия между sealed и abstract классами в Kotlin:

  • Наследование:

    • sealed класс ограничивает наследников — все подклассы должны быть объявлены в том же файле, что и сам sealed класс.
    • abstract класс не ограничивает наследование — подклассы могут быть объявлены где угодно.
  • Использование:

    • sealed классы удобны для представления ограниченного набора вариантов (например, для when выражений без else).
    • abstract классы служат для создания базовых классов с частичной реализацией.
  • Инстанцирование:

    • Оба класса нельзя инстанцировать напрямую.

Пример использования sealed класса:

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

fun handle(result: Result) = when(result) {
    is Result.Success -> println("Data: ${result.data}")
    Result.Error -> println("Error occurred")
}