Junior — Middle
Quais são as principais diferenças entre as classes declaradas com as palavras-chave sealed e abstract?
sobes.tech IA
Resposta da IA
As principais diferenças entre classes sealed e abstract em Kotlin:
-
Herança:
- A classe
sealedlimita os herdeiros: todos os subtipos devem ser declarados no mesmo ficheiro que a classesealed. - A classe
abstractnão limita a herança: os subtipos podem ser declarados em qualquer lugar.
- A classe
-
Utilização:
- Classes
sealedsão úteis para representar um conjunto limitado de opções (por exemplo, em expressõeswhensemelse). - Classes
abstractservem para criar classes base com implementação parcial.
- Classes
-
Instanciação:
- Nenhuma das duas classes pode ser instanciada diretamente.
Exemplo de uso de uma classe sealed:
sealed class Result {
data class Success(val data: String) : Result()
object Error : Result()
}
fun handle(result: Result) = when(result) {
is Result.Success -> println("Dados: ${result.data}")
Result.Error -> println("Ocorreu um erro")
}