Sobes.tech
Junior — Middle

Explique o que são classes fechadas em Kotlin e como elas são usadas

sobes.tech IA

Resposta da IA

No Kotlin, não existe um conceito específico de "classes fechadas" (closed classes) como um tipo separado, mas há uma ideia semelhante: classes seladas (sealed classes).

A classe selada limita a hierarquia de herança: todas as subclasses dessa classe devem ser declaradas no mesmo arquivo. Isso permite que o compilador conheça todas as subclasses possíveis e as utilize, por exemplo, em expressões when sem a necessidade de escrever um ramo else.

O uso de classes seladas é conveniente para modelar um conjunto limitado de opções, como estados ou eventos.

Exemplo:

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

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("Dados: ${result.data}")
        is Result.Error -> println("Erro: ${result.error.message}")
    }
}

Se por "classes fechadas" entende-se classes com o modificador private ou internal, então são classes com escopo de visibilidade limitado: private — visível apenas dentro do arquivo, internal — dentro do módulo.