Académique Documents
Professionnel Documents
Culture Documents
Des classes
Modifier la page Dernière modification : 11 mai 2021
class Empty
Constructeurs
Une classe dans Kotlin peut avoir un constructeur principal et un ou plusieurs constructeurs secondaires .
Le constructeur principal fait partie de l'en-tête de classe : il va après le nom de la classe (et les
paramètres de type facultatifs).
https://kotlinlang.org/docs/classes.html#constructors 1/7
17/06/2021 Classes | Kotlin
Le constructeur principal ne peut contenir aucun code. Le code d'initialisation peut être placé dans des
blocs d'initialisation , qui sont préfixés par le init mot - clé.
Lors d'une initialisation d'instance, les blocs d'initialisation sont exécutés dans le même ordre qu'ils
apparaissent dans le corps de la classe, entrelacés avec les initialiseurs de propriété :
init {
println ( "Premier bloc d'initialisation qui imprime ${name}" )
}
init {
println ( "Deuxième bloc d'initialisation qui imprime ${name.length}"
}
}
Première propriété : bonjour Premier bloc d'initialisation qui imprime bonjour Deux
Les paramètres du constructeur principal peuvent être utilisés dans les blocs d'initialisation. Ils peuvent
également être utilisés dans les initialiseurs de propriétés déclarés dans le corps de la classe :
Kotlin a une syntaxe concise pour déclarer les propriétés et les initialiser à partir du constructeur
principal :
https://kotlinlang.org/docs/classes.html#constructors 2/7
17/06/2021 Classes | Kotlin
class Person(val firstName: String, val lastName: String, var age: Int)
De telles déclarations peuvent également inclure des valeurs par défaut des propriétés de classe :
Vous pouvez utiliser une virgule de fin lorsque vous déclarez des propriétés de classe :
class Person(
val firstName: String,
val lastName: String,
var age: Int, // trailing comma
) { /*...*/ }
De la même manière que les propriétés normales, les propriétés déclarées dans le constructeur
principal peuvent être modifiables ( var ) ou en lecture seule ( val ).
Constructeurs secondaires
La classe peut également déclarer des constructeurs secondaires , qui sont préfixés par constructor :
class Pet {
https://kotlinlang.org/docs/classes.html#constructors 3/7
17/06/2021 Classes | Kotlin
constructor(owner: Person) {
owner.pets.add(this) // adds this pet to the list of its owner's
}
}
Le code dans les blocs d'initialisation devient effectivement une partie du constructeur principal. La
délégation au constructeur principal se produit comme la première instruction d'un constructeur
secondaire, de sorte que le code dans tous les blocs d'initialisation et les initialiseurs de propriété est
exécuté avant le corps du constructeur secondaire.
Même si la classe n'a pas de constructeur principal, la délégation se produit toujours implicitement et
les blocs d'initialisation sont toujours exécutés :
Constructeurs de classe {
init {
println ( "Bloc d'initialisation" )
}
constructeur ( i : Int ) {
println ( "Constructeur $i" )
}
}
https://kotlinlang.org/docs/classes.html#constructors 4/7
17/06/2021 Classes | Kotlin
Si une classe non abstraite ne déclare aucun constructeur (primaire ou secondaire), elle aura un
constructeur primaire généré sans arguments. La visibilité du constructeur sera publique.
Si vous ne voulez pas que votre classe ait un constructeur public, déclarez un constructeur primaire vide
avec une visibilité autre que celle par défaut :
Sur la JVM, si tous les paramètres du constructeur principal ont des valeurs par défaut, le
compilateur générera un constructeur supplémentaire sans paramètre qui utilisera les
valeurs par défaut. Cela facilite l'utilisation de Kotlin avec des bibliothèques telles que
Jackson ou JPA qui créent des instances de classe via des constructeurs sans paramètre.
La création d'instances de classes internes imbriquées, internes et anonymes est décrite dans Classes
imbriquées .
https://kotlinlang.org/docs/classes.html#constructors 5/7
17/06/2021 Classes | Kotlin
Membres de la classe
Les cours peuvent contenir :
• Les fonctions
• Propriétés
• Déclarations d'objets
Héritage
Les classes peuvent être dérivées les unes des autres et former des hiérarchies d'héritage. En savoir plus
sur l'héritage dans Kotlin .
Cours abstraits
Une classe et certains de ses membres peuvent être déclarés abstract . Un membre abstrait n'a pas
d'implémentation dans sa classe. Vous n'avez pas besoin d'annoter une classe ou une fonction abstraite
avec open .
Vous pouvez remplacer un open membre non abstrait par un membre abstrait.
https://kotlinlang.org/docs/classes.html#constructors 6/7
17/06/2021 Classes | Kotlin
Objets compagnons
Si vous devez écrire une fonction qui peut être appelée sans avoir d'instance de classe mais a besoin
d'accéder aux éléments internes d'une classe (par exemple, une méthode de fabrique), vous pouvez
l'écrire en tant que membre d'une déclaration d'objet à l' intérieur de cette classe.
Plus précisément encore, si vous déclarez un objet compagnon à l' intérieur de votre classe, vous
pouvez accéder à ses membres en utilisant uniquement le nom de la classe comme qualificatif.
https://kotlinlang.org/docs/classes.html#constructors 7/7