Главное отличие 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
Register or sign in to get access to full answers for all questions from the question bank.