bonjour
quelqu'un peut m'expliquer avec un exemple simple
les keyword "this" et "super"
je confond :
tous que j'ai vue dans le toile,me complique
aidez moi s'il vous plaît
bonjour
quelqu'un peut m'expliquer avec un exemple simple
les keyword "this" et "super"
je confond :
tous que j'ai vue dans le toile,me complique
aidez moi s'il vous plaît
Le mot-clé this peut être :
- L'instance d'objet en cours :
- L'appel d'un autre constructeur de la classe en cours :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 void setX(int x) { this.x = x; }
- (rare) Une notation pour accéder à l'instance en cours d'une classe englobante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public Livre(String titre) { description = titre; } public Livre() { this("Sans titre"); }
En résumé, this a à voir avec l'instance en cours, ou avec la classe en cours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class Englobante { void saySomething() { System.out.println("Je suis Englobante"): } class Interne { Interne() { // Appel à saySomething() de la classe Englobante Englobante.this.saySomething(); } void saySomething() { System.out.println("Je suis Interne"): } } }
Le mot-clé super peut être :
- Une notation pour accéder aux membres, méthodes et classes accessibles à la classe mère, mais qui sont masquées dans la classe en cours :
- Un appel explicite à un constructeur de la classe mère. Une convention Java est que si un constructeur ne fait pas appel à super(...), c'est comme s'il faisait appel au super() sans paramètre : le constructeur par défaut de la classe mère. Si la classe mère n'a pas de constructeur par défaut, un appel à l'un de ses constructeurs avec super est obligatoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Mere { protected int x = 10; } class Fille extends Mere { protected String x = "Hello"; Fille() { // x est une String qui vaut "Hello" et super.x est un int qui vaut 10. System.out.println(x + " " + super.x); } }
En résumé, super a à voir avec la classe mère.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Livre { String description; public Livre(String titre) { description = titre; } } class LivreSansTitre extends Livre { public LivreSansTitre() { super("Pas de titre"); } }
bonjour
je comprends bien à quoi sert "this" et "super"
mais je ne sais pas comment placer dans le programme,pouvez vous m'aider
encore plus si ça vous dérange pas
Bonjour,
Les mots clés this et super vont être à utiliser dans les classes concernées.
Quelle est la structure de votre programme ?
je n'ai pas un programme précis,vous donnez vous même un programme quelconque et m'expliquez s'il vous plaît
dans cette exemple
titre de livre est sans titre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public Livre(String titre) { description = titre; } public Livre() { this("Sans titre"); }
est ce que je suis juste?
Pour completer tout ce qui a été dit, Voici ce que vous devez encore retenir:
- Le mot clé this refère au conteneur courant (généralement la classe courante).
ex: pour acceder à la variable x d'une classe A à partir de la classe B on écrira:
A.x;
A l'intérieur de B, on accedera à la variable x en faisant this.x
- Le mot clé super sert à faire appel au constructeur de la classe de base.
L'ennui c'est que c'est bien trop simpliste, et que ça ne se concentre que sur un seul aspect de this et un seul aspect de super. Pas top quand on a besoin de ce dont tu ne parles pas.
Non, l'objet courant. L'instance courante si tu préfères. Pas la classe courante. (Sauf si on utilise this comme appel de constructeur, auquel cas ça se discute.)
Non non non, tu t'embrouilles, là. Ton truc ça ne marche que si le x de A est un membre statique, et le x de B un membre non statique. Ça n'a juste rien à voir.ex: pour acceder à la variable x d'une classe A à partir de la classe B on écrira:
A.x;
A l'intérieur de B, on accedera à la variable x en faisant this.x
De la classe mère, pas de la classe de base. Elle peut elle-même avoir une mère, qui a elle-même une mère...
Code : Sélectionner tout - Visualiser dans une fenêtre à part - Le mot clé super sert à faire appel au constructeur de la classe de base.
De plus, super ne concerne pas que le constructeur : on peut aussi appeler les méthodes de la classe mère avec. (Et adresser les attributs et les classes imbriquées, aussi, mais c'est déjà plus rare.)
Partager