Constructeurs primaires
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 3 sur 57.
La plupart des classes Kotlin prennent leurs valeurs initiales dans un constructeur primaire, écrit entre parenthèses après le nom de la classe. val ou var placé devant un paramètre en fait simultanément une propriété :
class Book(val title: String, var pages: Int)À l'intérieur de main :
val book = Book("Dune", 412)
println(book.title)
book.pages += 8
println(book.pages)Sortie :
Dune
420Un paramètre sans val ni var est disponible uniquement lors de la création de l’instance, par exemple pour calculer une propriété. Les propriétés val ne peuvent pas être réaffectées après la création : les propriétés var le peuvent :
class Temperature(celsius: Double) {
val fahrenheit = celsius * 9 / 5 + 32
}Dans main :
val t = Temperature(100.0)
println(t.fahrenheit)Sortie :
212.0Les paramètres du constructeur peuvent avoir des valeurs par défaut et être transmis par nom, ainsi un seul constructeur couvre de nombreuses façons de créer une instance :
class Timer(val seconds: Int, val label: String = "timer")À l’intérieur de main :
val egg = Timer(300, "egg")
val quick = Timer(30)
val named = Timer(label = "tea", seconds = 180)
println("${egg.label} ${egg.seconds}")
println("${quick.label} ${quick.seconds}")
println("${named.label} ${named.seconds}")Sortie :
egg 300
timer 30
tea 180À l’intérieur du corps de la classe, this fait référence à l’instance actuelle. Il est nécessaire lorsqu’un paramètre de méthode porte le même nom qu’une propriété :
class Player(var name: String) {
fun rename(name: String) {
this.name = name
}
}À l’intérieur de main :
val p = Player("anon")
p.rename("Ada")
println(p.name)Sortie :
AdaDéfi
FacileDéclarez la classe Account avec un constructeur primaire : un owner en lecture seule et un balance modifiable dont la valeur par défaut est 0. Ajoutez summary(), qui renvoie Ada has 150.
Le code fourni lit un propriétaire et, lorsqu’une deuxième ligne est présente, un solde initial. Il crée le compte avec ou sans le solde, puis affiche summary().
Votre code doit être placé dans Account.kt. Main.kt contient le code fourni pour l’entrée et la sortie et ne peut pas être modifié.
Essayez vous-même
fun main() {
// Code d'entrée/sortie fourni : le garder tel quel
val input = generateSequence(::readLine).toList()
val account = if (input.size > 1) Account(input[0], input[1].toInt()) else Account(input[0])
println(account.summary())
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesConstructeurs primairesBlocs init et validationConstructeurs secondairesRécapitulatif - Carte de bibliothèque4Héritage
Classes ouvertes et sous-classesRedéfinition des membressuper et constructeursClasses abstraitesRécapitulatif – Annuaire du personnel2Propriétés et encapsulation
Accesseurs personnalisésModificateurs de visibilitéSetters privéslazy et lateinitRécapitulatif - Compte bancaire5Interfaces
Déclarer des interfacesMéthodes par défautInterfaces multiplesInterfaces en tant que typesRécapitulatif - Méthodes de paiement8Génériques
Fonctions génériquesClasses génériquesContraintes de typeVariance avec in et outRécapitulatif - File de priorité11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Playground Kotlin