Définir des classes
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 2 sur 57.
Une class décrit un type d’objet : les données qu’il contient et ce qu’il peut faire. class Dog { ... } déclare le type, et Dog() crée un objet de ce type, une instance. Kotlin n’a pas de mot-clé new :
class Dog {
var name = "Rex"
var age = 3
}À l’intérieur de main :
val dog = Dog()
println(dog.name)
println(dog.age)Sortie :
Rex
3Les variables à l’intérieur d’une classe sont ses propriétés. Chaque instance possède sa propre copie, qui se lit et se modifie avec un point :
class Dog {
var name = "Rex"
}À l’intérieur de main :
val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)Résultat :
Rex
BellaUne fonction à l’intérieur d’une classe est une méthode (Kotlin les appelle des fonctions membres). Une méthode peut lire et modifier les propriétés de l’instance sur laquelle elle est appelée :
class Counter {
var count = 0
fun increment() {
count++
}
fun report() = "count is $count"
}À l’intérieur de main :
val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())Sortie :
count is 2Les noms de classes utilisent l’UpperCamelCase (BankAccount) ; les propriétés et les méthodes utilisent le lowerCamelCase (balance, deposit()). Regrouper les données avec les fonctions qui les manipulent est l’idée centrale de la programmation orientée objet : le code qui utilise un Counter appelle increment() et n’a jamais besoin de savoir comment le compteur est stocké.
class BankAccount {
var balance = 0
fun deposit(amount: Int) {
balance += amount
}
}Défi
FacileComplète la méthode describe() de la classe Pet. Elle renvoie une phrase construite à partir des propriétés : un animal nommé Rex, d’espèce dog, âgé de 3 ans donne Rex is a 3 year old dog.
Le code fourni crée un Pet, définit ses propriétés à partir de l’entrée (nom, espèce, âge) et affiche le résultat de describe().
Ton code doit se trouver dans Pet.kt. Main.kt contient le code d’entrée/sortie fourni 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 pet = Pet()
pet.name = input[0]
pet.species = input[1]
pet.age = input[2].toInt()
println(pet.describe())
}
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