Como definirias una sealed class y cuales son sus 3 condiciones fundamentales que debe cumplir?
Una sealed class es una clase que posee varias subclases
Cual es el caso de uso mas normal en las sealed classes y pq?
Usarlas con un when ya que podemos el compilador conoce el numero de subclases y usando el when abarcamos todas las opciones o subclases de la sealed class. Si nos falta alguna el compilador nos avisa. Esto nos permite evitar el uso del else
```kotlin
sealed class Op
class Suma(val valor: Int) : Op()
class Restar(val valor: Int) : Op()
object Dividir2 : Op()
fun (valor: Int, op: Op) : Int = when(op){
is Suma -> valor + op.valor
is Resta -> valor - op.valor
Dividir2 -> valor/2
~~~
Diferencia entre enum y sealed class
Ambos son abstractos y no podemos instanciar objetos de este tipo
Ambos albergan un set de valores
La unica diferencia es que en un enumerado solo tenemos un objeto por tipo mientras que en las sealed podemos tener varios objetos de la misma clase