Accesseurs get et set personnalisés avec field
Écrivez des propriétés calculées et des accesseurs set personnalisés à l’aide du mot-clé field représentant le champ de stockage.
Accesseurs get et set personnalisés avec field est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Les propriétés ne sont pas de simples champs
Chaque propriété Kotlin possède un accesseur généré automatiquement (et, pour var, un mutateur). Vous pouvez les remplacer pour ajouter une logique — validation, journalisation ou calcul.
Accesseur personnalisé
Remplacez get() pour calculer la valeur à chaque lecture.
class Circle(val radius: Double) {
val area: Double
get() = Math.PI * radius * radius
}
fun main() {
val c = Circle(3.0)
println(c.area) // ~28.27
}Propriétés calculées
Les propriétés calculées n’ont pas de champ de stockage ; leur valeur est calculée à chaque accès.
class Rectangle(val w: Int, val h: Int) {
val area get() = w * h
val perimeter get() = 2 * (w + h)
}
fun main() {
val r = Rectangle(3, 4)
println("${r.area}, ${r.perimeter}") // 12, 14
}Mutateur personnalisé avec field
Dans un mutateur personnalisé, field désigne le champ de stockage — l’espace où la valeur est réellement conservée.
class Temperature {
var celsius: Double = 0.0
set(value) {
require(value >= -273.15) { "below absolute zero" }
field = value
}
}
fun main() {
val t = Temperature()
t.celsius = 25.0
println(t.celsius)
// t.celsius = -300.0 // throws
}Champ de stockage généré automatiquement
Si l’accesseur ou le mutateur utilise field, Kotlin génère un champ de stockage. Si aucun des deux ne l’utilise, aucun champ n’est créé : la propriété est entièrement calculée.
class Counter {
var count: Int = 0
set(value) {
println("Setting count from $field to $value")
field = value
}
}
fun main() {
val c = Counter()
c.count = 5
c.count = 10
}Mutateur avec effets de bord
Utilisez des mutateurs personnalisés pour la journalisation, la notification des changements ou la synchronisation d’un état associé.
class Brightness {
var level: Int = 50
set(value) {
val clamped = value.coerceIn(0, 100)
println("Brightness -> $clamped")
field = clamped
}
}
fun main() {
val b = Brightness()
b.level = 75
b.level = 150 // clamps to 100
println(b.level)
}Mutateur privé
Déclarez le mutateur private pour exposer une API en lecture seule tout en autorisant les modifications internes.
class Score {
var value: Int = 0
private set
fun increment() { value++ }
fun reset() { value = 0 }
}
fun main() {
val s = Score()
s.increment(); s.increment()
println(s.value) // 2
// s.value = 100 // ERROR: setter is private
}Validation dans un mutateur
Les mutateurs personnalisés sont l’endroit naturel pour valider les données d’entrée.
class Email {
var address: String = ""
set(value) {
require(value.contains("@")) { "invalid email" }
field = value
}
}
fun main() {
val e = Email()
e.address = "ada@example.com"
println(e.address)
}Accesseur avec logique
Les accesseurs peuvent transformer l’état stocké — par exemple formater une valeur stockée ou appliquer une valeur de repli par défaut.
class Profile(_name: String?) {
var rawName: String? = _name
val displayName: String
get() = rawName ?: "(unset)"
}
fun main() {
val p = Profile(null)
println(p.displayName) // (unset)
}Comparer val et var
Les propriétés val possèdent uniquement un accesseur (pas de mutateur) ; les propriétés var possèdent les deux.
class Box {
val readOnly: Int get() = 42
var readWrite: Int = 0
}
fun main() {
println(Box().readOnly)
val b = Box(); b.readWrite = 5; println(b.readWrite)
}Erreur courante : la récursion
N’utilisez pas le nom de la propriété dans son propre accesseur : cela provoque une récursion infinie. Utilisez plutôt field.
class Wrong {
var x: Int = 0
set(value) {
// x = value // INFINITE RECURSION — calls setter again
field = value // CORRECT
}
}
fun main() {
val w = Wrong(); w.x = 42; println(w.x)
}Vérification rapide
Dans un setter personnalisé, à quoi l’identifiant field fait-il référence ?
Récapitulatif
Redéfinissez get() et set() pour ajouter une logique à l’accès aux propriétés. Utilisez field dans les accesseurs pour lire ou écrire dans le champ de stockage. Marquez les setters private pour créer des API publiques en lecture seule ; utilisez des propriétés calculées (sans champ de stockage) lorsque la valeur est toujours dérivée.
Apprends Kotlin avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 51
- Leçons
- 203
Questions Fréquemment Posées
La leçon « Accesseurs get et set personnalisés avec field » est-elle gratuite ?
Oui — le texte complet de « Accesseurs get et set personnalisés avec field » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Accesseurs get et set personnalisés avec field » ?
Écrivez des propriétés calculées et des accesseurs set personnalisés à l’aide du mot-clé field représentant le champ de stockage. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Accesseurs get et set personnalisés avec field » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Constructeur primaire et paramètres de propriétés
- Blocs init et ordre d’initialisation
- Accesseurs get et set personnalisés avec field
- lateinit et initialisation différée