-
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
contents |
---|
Sealed classes are abstract classes |
All the members of the sealed class must be defined in the same file |
A bit of understanding on how classes are different in kotlin compared to java |
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
Animal
forCamel
andMonkey
but it's defined in the same file. If we try to inherit in another file, it will not work. - What the
sealed
modifier
does 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
kotlin
classes arefinal
by default meaning they cannot be inherited by just extending. - We need to explicitly make them
open
to be inherited. - Sealed classes fit between
final
andopen
. 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 its inherited by whom but here all the children are in the same class.