-
Notifications
You must be signed in to change notification settings - Fork 24
About sealed class in android
Devrath edited this page Aug 9, 2022
·
15 revisions
There are only abstract methods defined and concrete implementations are defined.
sealed class Animal {
object Cat : Animal() // We can define a Object classes like this
data class Dog(val name: String) : Animal() // We can define data classes like this
}- Here you can observe that we are inheriting
AnimalforCamelandMonkeybut it's defined in the same file. If we try to inherit in another file, it will not work. - What the
sealedmodifierdoes is, it is impossible to define another subclass outside the file. - Because of this, we know the sub-classes of a class by just analyzing a single file.
Animal.kt
package com.demo.subclasses
sealed class Animal {
object Cat : Animal() // We can define a Object classes like this
data class Dog(val name: String) : Animal() // We can define data classes like this
}
object Camel : Animal()
object Monkey : Animal()- In
kotlinclasses arefinalby default meaning they cannot be inherited by just extending. - We need to explicitly make them
opento be inherited. - Sealed classes fit between
finalandopen. This Final <------->Sealed classes<-------> Open - So sealed classes help in taking advantage of inheritance but in a limited format.
- This will ensure we don't end up with a massive long inheritance tree and not knowing easily where it's inherited by whom but here all the children are in the same class.
