Sobes.tech
Junior — Middle

Explique as diferenças entre uma classe fechada e uma enumeração na linguagem de programação.

sobes.tech IA

Resposta da IA

Na linguagem Kotlin, por exemplo, classe selada (sealed class) e classe enum (enum class) servem para modelar um conjunto limitado de tipos, mas têm características diferentes.

  • Classe selada (sealed class) permite criar uma hierarquia de subclasses que podem ter suas próprias propriedades e métodos. Todas as subclasses devem ser declaradas no mesmo ficheiro que a classe selada, o que garante controlo sobre a extensão.
  • Classe enum (enum class) representa um conjunto fixo de constantes, cada uma das quais é um objeto dessa classe. Os enums não suportam herança, mas podem ter propriedades e métodos.

Diferenças:

  1. Herança: a classe selada permite criar diferentes subclasses com estruturas distintas, o enum — um conjunto fixo de objetos.
  2. Utilização: a classe selada é útil para expressar estados com diferentes dados, o enum — para constantes fixas.
  3. Extensibilidade: a classe selada pode ser extendida dentro do ficheiro, o enum — não.

Exemplo de classe selada:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
}

Exemplo de enum:

enum class Direction {
    NORTH, SOUTH, EAST, WEST
}