Sobes.tech
Junior

Que peux-tu dire sur les propriétés ainsi que les méthodes get et set en Kotlin?

sobes.tech IA

Réponse de l'IA

En Kotlin, les propriétés sont une combinaison d'un champ et de leur getter et setter correspondants.

Définition d'une propriété :

class MyClass {
    var mutableProperty: String = "default"
    val immutableProperty: Int = 10
}

Ici, mutableProperty est une propriété mutable avec un getter et un setter par défaut. immutableProperty est une propriété immuable avec uniquement un getter par défaut.

Définition explicite du getter et du setter :

class MyClass {
    var customProperty: String = ""
        get() = field.toUpperCase() // Getter personnalisé
        set(value) {
            field = value.toLowerCase() // Setter personnalisé
        }

    val computedProperty: Int
        get() = (1..10).random() // Propriété calculée, sans champ
}
  • field - référence au champ de la propriété à l'intérieur du getter et du setter. Utilisé uniquement pour les propriétés mutables (var).
  • Les getters et setters peuvent être personnalisés, effectuant une logique supplémentaire lors de l'accès ou de la modification de la propriété.
  • Les propriétés calculées (computedProperty) n'ont pas de champ propre et calculent toujours leur valeur lors de l'accès.

Points clés :

  • En Kotlin, il n'est pas nécessaire de créer explicitement des getters et setters pour chaque champ, comme en Java. Ils sont générés automatiquement.
  • Les propriétés sont accessibles via la notation pointée (instance.nomPropriete).
  • La définition explicite du getter et du setter permet d'ajouter une logique lors de l'accès ou de la modification.
  • Les getters pour les propriétés val doivent toujours retourner une valeur du même type.
  • Les setters pour les propriétés var acceptent un paramètre du même type.

Comparaison des propriétés en Kotlin et des champs+méthodes en Java :

Propriété Kotlin Champ + Méthodes Java Description
var maPropriete: Type private Type maPropriete; + public Type getMaPropriete() + public void setMaPropriete(Type valeur) Propriété mutable avec getter et setter automatiques.
val maPropriete: Type private Type maPropriete; + public Type getMaPropriete() Propriété immuable avec uniquement un getter automatique.
Getter/Setter personnalisé Écriture explicite de la logique Ajout de logique personnalisée lors de l'accès ou de la modification.
Propriété calculée Méthode explicite retournant une valeur La valeur de la propriété est calculée à chaque demande.