Ответ
Да, sealed класс может наследоваться от другого sealed класса в Kotlin. Это позволяет создавать иерархии sealed классов. Однако все подклассы должны быть объявлены в том же файле или внутри тела родительского sealed класса.
Пример:
sealed class Vehicle
sealed class Car : Vehicle() {
class Sedan : Car()
class SUV : Car()
}
fun processVehicle(vehicle: Vehicle) {
when (vehicle) {
is Car.Sedan -> println("Sedan")
is Car.SUV -> println("SUV")
}
}
Ограничения:
- Все наследники должны быть в том же файле или внутри sealed класса
- Наследники могут быть как обычными, так и sealed классами
- Наследование работает только в пределах одного модуля