Sobes.tech
Junior — Middle

Explique ce que sont les classes fermées en Kotlin et comment elles sont utilisées

sobes.tech IA

Réponse de l'IA

En Kotlin, il n'existe pas de concept spécifique de "classes fermées" (closed classes) en tant que type distinct, mais il existe une idée similaire : les classes scellées (sealed classes).

Une classe scellée limite la hiérarchie d'héritage : toutes les sous-classes de cette classe doivent être déclarées dans le même fichier. Cela permet au compilateur de connaître toutes les sous-classes possibles et de les utiliser, par exemple, dans des expressions when sans avoir besoin d'écrire une branche else.

L'utilisation de classes scellées est pratique pour modéliser un ensemble limité d'options, comme des états ou des événements.

Exemple :

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("Données : ${result.data}")
        is Result.Error -> println("Erreur : ${result.error.message}")
    }
}

Si par "classes fermées" on entend des classes avec le modificateur private ou internal, alors ce sont des classes avec une portée de visibilité limitée : private — visible uniquement à l'intérieur du fichier, internal — à l'intérieur du module.