Назад к вопросам
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")
}