Sealed Classes Flashcards
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
- Constructor siempre privado, siempre es asi por defecto y no hay que tocar nada
- Todas las subclases se deben declarar en el mismo file que la superclase
- Son por defecto abstractas, no se pueden crear objetos o instancias de este tipo
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