Super et this
Résolu/Fermé
pskch
Messages postés
3
Date d'inscription
mercredi 21 janvier 2015
Statut
Membre
Dernière intervention
21 janvier 2015
-
21 janv. 2015 à 00:57
pskch Messages postés 3 Date d'inscription mercredi 21 janvier 2015 Statut Membre Dernière intervention 21 janvier 2015 - 21 janv. 2015 à 21:30
pskch Messages postés 3 Date d'inscription mercredi 21 janvier 2015 Statut Membre Dernière intervention 21 janvier 2015 - 21 janv. 2015 à 21:30
A voir également:
- Super et this
- Super copier - Télécharger - Gestion de fichiers
- Pc super lent - Guide
- Super zoom google maps - Guide
- Super email validator v43 - Télécharger - Mail
- Super screen recorder - Télécharger - Capture d'écran
1 réponse
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
21 janv. 2015 à 07:09
21 janv. 2015 à 07:09
Bonjour,
Ton affirmation ne vaut que pour l'appel d'un autre constructeur.
Pour l'utilisation d'autres méthodes tu peux alterner super et this si tu en as besoin.
Exemple :
Attention : appeler des méthodes surchargées dans le constructeur peut entraîner des erreurs. C'est pour ça qu'en pratique on évite d'utiliser les appels super.m()
Ton affirmation ne vaut que pour l'appel d'un autre constructeur.
Pour l'utilisation d'autres méthodes tu peux alterner super et this si tu en as besoin.
Exemple :
public class A { public A(String str) { } public void m1() { } public void m2() { } public void m3() { } public void m4() { } } public class B extends A { public B() { this("toto"); super.m1(); this.m2(); } public B(String str) { super(str); this.m3(); super.m4(); } }
Attention : appeler des méthodes surchargées dans le constructeur peut entraîner des erreurs. C'est pour ça qu'en pratique on évite d'utiliser les appels super.m()
21 janv. 2015 à 13:45
Si on a dans le constructeur de la classe mère Public A(){ System.out.printf("constructeur de A");
}
et on fai dans le constructeur de la classe fille Public B(){
super();
this("toto");
}
21 janv. 2015 à 21:21
Son rôle est d'instancier une première valeur à l'objet et donc à tous ses champs.
Du coup ça ne sert à rien d'initialiser deux fois tes valeurs, ce que tu ferais en appelant à la fois super et this. En effet, le constructeur appelé avec this, fait déjà un appel à super, donc si tu fais super(), puis this("toto"), tu fais deux fois super, tu initialiserais donc deux fois les champs de la classe mère. L'appel de deux constructeurs comme ça est donc interdit, pour éviter tout conflit.
21 janv. 2015 à 21:30