Super et this en Dart
Super et this en Dart
Objectifs du cours
- Comprendre le rôle de
super
et this dans la programmation orientée objet en Dart. - Savoir utiliser
super
pour accéder aux membres de la classe parente. - Savoir utiliser this pour faire référence à l’objet actuel.
- Appliquer ces concepts dans des exemples pratiques et des exercices.
-
Définitions
-
super
super
: Un mot-clé utilisé pour accéder aux membres (attributs et méthodes) de la classe parente ou de la superclasse.- Le mot-clé
super
dans Dart est utilisé pour faire référence aux méthodes ou aux variables de l’objet de classe parent. En termes simples, il est utilisé pour faire référence aux propriétés et méthodes de la superclasse . - L’utilisation la plus importante du mot-clé
super
est de supprimer l’ambiguïté entre la superclasse et la sous-classe qui ont des méthodes et des variables portant le même nom. - Le mot-clé
super
est capable d’invoquer la méthode et les champs des objets parent, car lorsque nous créons une instance de la sous-classe dans Dart, une instance de la classe parent est également créée implicitement. -
Accéder à la variable de classe parent
-
Accéder aux méthodes de la classe parent
- En Dart, pour accéder aux méthodes de la classe parent, vous pouvez utiliser le mot-clé super. Le mot-clé super est utilisé pour se référer à la classe parent et accéder à ses propriétés et méthodes.
- Voici comment vous pouvez l’utiliser :
- Dans cet exemple, la classe Enfant hérite de la classe Parent. Lorsque vous appelez
super.maMethode()
à l’intérieur de la méthodemaMethode()
de la classe enfant, cela appelle la méthodemaMethode()
de la classe parent. Ensuite, le reste du code de la méthode de la classe enfant est exécuté. -
This
- this : Un mot-clé utilisé pour faire référence à l’objet actuel.
class Animal {
int count = 150;
}
class Dog extends Animal {
int count = 70;
void printNumber(){
print("Afficher le contenu de la variable locale count: $count");
print("Afficher le contenu de la variable de la classe Animal count:${super.count}");
}
}
void main(){
Dog obj= Dog();
obj.printNumber();
}
//Output
//Afficher le contenu de la variable locale count: 70
//Afficher le contenu de la variable de la classe Animal count:150
Dans l’exemple ci-dessus, nous avons deux classes Animal et Dog , où Animal est la classe
parent
(ouSuperclass
) et Dog est laclasse enfant
(ousous-classe
). Il convient de noter que la variable nommée count est déclarée à la fois dans la superclasse et la sous-classe, et lorsque nous utilisonssuper.count
elle fera référence à la classe parent (superclasse).
class Parent {
void maMethode() {
print("Méthode de la classe parent");
}
}
class Enfant extends Parent {
void maMethode() {
super.maMethode(); // Appel de la méthode de la classe parent
print("Méthode de la classe enfant");
}
}
void main() {
Enfant enfant = new Enfant();
enfant.maMethode();
}
Types d’utilisation
super
est utilisé dans le contexte de l’héritage pour accéder ou modifier les membres de la classe parente.- this est utilisé pour distinguer les membres d’un objet des paramètres ou des variables locales ayant le même nom.
-
Utilisation de
super
-
Activité d’exemple :
- Définissez une classe parente appelée Véhicule avec un attribut vitesseMaximale et une méthode afficherVitesseMaximale() qui affiche la vitesse maximale du véhicule.
- Définissez une classe dérivée appelée Voiture qui hérite de la classe Véhicule. Surchargez la méthode afficherVitesseMaximale() pour afficher également le type de véhicule (voiture).
- Créez une instance de Voiture, appelez la méthode afficherVitesseMaximale() et observez les résultats.
-
Exercice :
- Définissez une classe parente appelée Forme avec un attribut couleur et une méthode afficherCouleur() qui affiche la couleur de la forme.
- Définissez une classe dérivée appelée Cercle qui hérite de la classe Forme. Surchargez la méthode afficherCouleur() pour afficher également le type de forme (cercle).
- Créez une instance de Cercle, appelez la méthode afficherCouleur() et observez les résultats.
-
Utilisation de this
-
Activité d’exemple :
- Définissez une classe Personne avec un attribut nom. Déclarez une méthode afficherNom() qui affiche le nom de la personne.
- Déclarez une autre méthode afficherNomAvecThis() qui utilise this pour afficher le nom de la personne.
- Créez une instance de Personne, appelez les deux méthodes et observez les résultats.
-
Exercice :
- Définissez une classe Produit avec des attributs nom et prix. Déclarez une méthode afficherDetails() qui affiche le nom et le prix du produit.
- Déclarez une autre méthode afficherDetailsAvecThis() qui utilise this pour afficher les détails du produit.
- Créez une instance de Produit, appelez les deux méthodes et observez les résultats.