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:
- Herança: a classe selada permite criar diferentes subclasses com estruturas distintas, o enum — um conjunto fixo de objetos.
- Utilização: a classe selada é útil para expressar estados com diferentes dados, o enum — para constantes fixas.
- 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
}