Sobes.tech
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 sealed limita os herdeiros: todos os subtipos devem ser declarados no mesmo ficheiro que a classe sealed.
    • A classe abstract não limita a herança: os subtipos podem ser declarados em qualquer lugar.
  • Utilização:

    • Classes sealed são úteis para representar um conjunto limitado de opções (por exemplo, em expressões when sem else).
    • Classes abstract servem para criar classes base com implementação parcial.
  • 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")
}