Kotlin Sealed Classes
class Expr class Const(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) : Expr fun eval(e: Expr): Int = when (e) { is Const -> e.value is Sum -> eval(e.right) + eval(e.left) else -> throw IllegalArgumentException("Unknown expression") }
sealed class in kotlin example
sealed class Message { abstract val messageId: String } data class Track(val event: String, override val messageId: String): Message()
Source: tedblob.com