Главное отличие sealed-классов от абстрактных в том, что sealed-классы ограничивают иерархию наследования в пределах одного файла или модуля (для Kotlin 1.5+). Наследники sealed-класса должны быть объявлены в том же файле, что и сам sealed-класс, что обеспечивает исчерпывающую проверку при использовании when
выражений.
Отличия:
when
:
when
с sealed-типом компилятор может проверить, что все возможные подтипы были учтены, что делает when
исчерпывающим и избавляет от необходимости explicitly указывать else
ветку, если все подтипы обработаны.else
.Пример sealed-класса:
kotlin
Главное отличие sealed-классов от абстрактных в том, что sealed-классы ограничивают иерархию наследования в пределах одного файла или модуля (для Kotlin 1.5+). Наследники sealed-класса должны быть объявлены в том же файле, что и сам sealed-класс, что обеспечивает исчерпывающую проверку при использовании when
выражений.
Отличия:
when
:
when
с sealed-типом компилятор может проверить, что все возможные подтипы были учтены, что делает when
исчерпывающим и избавляет от необходимости explicitly указывать else
ветку, если все подтипы обработаны.else
.Пример sealed-класса:
kotlin
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.