Ответ
Sealed class в Kotlin может объявляться с разными конструкторами:
- Primary конструктор (может быть private или protected):
sealed class Result<out T>(val data: T?)
- Вторичные конструкторы (только внутри sealed class):
sealed class Result<out T> {
constructor(data: T?) : this(data)
constructor() : this(null)
}
- Конструкторы у наследников (могут быть любыми):
class Success<T>(data: T) : Result<T>(data)
class Error(val exception: Exception) : Result<Nothing>(null)
Важно: сам sealed class не может быть инстанциирован, но его наследники - могут. Конструкторы sealed class по умолчанию protected, но можно сделать private.