Le mot-clé this
Fait partie de la section Programmation Orientée Objet du Journey Dart de Coddy — leçon 5 sur 110.
Le mot-clé this fait référence à l'instance actuelle d'une classe. À l'intérieur d'une méthode, this vous permet d'accéder aux propres variables de l'objet.
Voici un exemple d'une classe avec des méthodes utilisant this :
class Car {
String color = '';
String model = '';
void honk() {
print('Beep beep!');
}
void describe() {
print('I am a ${this.color} ${this.model}');
}
}À l'intérieur de describe(), this.color et this.model font référence aux variables de cet objet spécifique.
Créez un objet voiture et définissez ses variables :
Car myCar = Car();
myCar.color = 'Red';
myCar.model = 'Sedan';Appelez les méthodes :
myCar.honk();
myCar.describe();Sortie :
Beep beep!
I am a Red Sedanthis est particulièrement utile lorsqu'un paramètre de méthode porte le même nom qu'une variable d'instance :
class Car {
String color = '';
void setColor(String color) {
this.color = color; // this.color = variable d'instance, color = paramètre
}
}Sans this, Dart ne saurait pas si color se réfère au paramètre ou à la variable d'instance. Point clé : this se réfère toujours à l'objet spécifique qui appelle actuellement la méthode.
Défi
FacileComplétez la classe Car dans car.dart en ajoutant une méthode appelée displayInfo qui utilise le mot-clé this pour afficher l'année, la marque et le modèle de la voiture au format :
'This car is a [year] [make] [model]'
car.dart: Contient la classeCaroù vous ajouterez la méthodedisplayInfodriver.dart: Définit les variables sur un objet car et appelledisplayInfo()(verrouillé)
Aide-mémoire
Le mot-clé this fait référence à l'instance actuelle d'une classe et vous permet d'accéder aux propres variables de l'objet à l'intérieur des méthodes.
Utilisation de this dans une méthode :
class Car {
String color = '';
String model = '';
void describe() {
print('I am a ${this.color} ${this.model}');
}
}this est particulièrement utile lorsqu'un paramètre de méthode porte le même nom qu'une variable d'instance :
class Car {
String color = '';
void setColor(String color) {
this.color = color; // this.color = variable d'instance, color = paramètre
}
}Sans this, Dart ne saurait pas si color fait référence au paramètre ou à la variable d'instance.
Essayez vous-même
import 'car.dart';
void main() {
Car myCar = Car();
myCar.year = '2020';
myCar.make = 'Toyota';
myCar.model = 'Corolla';
myCar.displayInfo();
}
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
1Les bases de la POO
Fichiers externesBibliothèques et importsIntroduction à la POOClasses vs ObjetsLe mot-clé thisMéthodesVariables d'instanceBases des constructeursRécapitulatif - Calculatrice simple4Null Safety
Introduction à la Null SafetyNullable vs Non-NullableLes opérateurs ? et !Le mot-clé late et la Null SafetyLes opérateurs Null-AwareLa Null Safety dans les classesRécapitulatif - Système de profil utilisateur7Classes abstraites et Interfaces
Classes abstraitesMéthodes abstraitesInterfaces en DartInterfaces implicitesImplémentation vs ExtensionInterfaces multiplesRécapitulatif - Calculateur de formes10Collections et Génériques
Aperçu des List, Set et MapCollections Type-SafeClasses génériquesMéthodes génériquesContraintes de généricitéIterable & IteratorRécapitulatif - Stockage générique2Les constructeurs en Dart
Constructeur par défautConstructeurs nommésListes d'initialisationConstructeurs constantsConstructeurs factoryConstructeurs de redirectionRécapitulatif - Shape Builder5Encapsulation
Membres publics vs privésLa convention du préfixe _Visibilité au niveau de la bibliothèqueApprofondissement des Getters & SettersMasquage d'informationsRécapitulatif - Dossiers d'étudiants8Mixins
Introduction aux MixinsCréation de MixinsUtilisation de plusieurs MixinsLe mot-clé on dans les MixinsMixin vs HéritageMixin vs InterfaceRécapitulatif - Système Animal11Méthodes spéciales
Redéfinition de toString()Redéfinition de hashCode & ==Interface ComparableMéthode call()Redéfinition de noSuchMethodRécapitulatif - Collection personnalisée14Patrons de conception Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FabriquePatron ObservateurPatron Stratégie3Propriétés de classe
Membres d'instance vs statiquesChamps Final & ConstVariables LateMéthodes et champs statiquesGetters et SettersRécapitulatif - Gestionnaire de compte bancaire6Héritage
Bases de l'héritageLe mot-clé superRedéfinition de méthodeL'annotation @overrideLe mot-clé final pour les classesConstructeurs et héritageRécapitulatif - Hiérarchie des employés9Polymorphisme
Bases du polymorphismePolymorphisme via les interfacesVérification de type à l'exécutionLes opérateurs is & asMot-clé covariantRécapitulatif - Processeur de paiement12POO Asynchrone
Futures & async/awaitBases des StreamsStream ControllersConstructeurs asynchronesL'asynchrone dans les méthodes de classeRécapitulatif - Data Fetcher15Patrons de conception Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode ModèlePatron ÉtatPatron CompositePatron Repository