Les Contructeurs [Résolu]

Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
-
Bonjour,

J'ai été surpris dans un code source, que certains reconnaitrons peut-être, un constructeur dans lequel on passe un paramètre à l'objet en question. un code exemple est plus explicite. j'ai deux classe A et B qui ensemble feront un composant swing crée de toute pièce.

public class A {
private Parametre champ1;
public A(Parametre p){
this.champ1 = p;
}

public void methode(){
System.out.println("aucune importance");
}
}

//et dans la deuxième classe j'ai un code comme ceci

public class B{
private A champ2;

public B(Parametre p2){
this(new A(p2)); // je ne comprends pas cette ligne
}

}

Comme j'ai mis en commentaire je ne comprends pas ce que cette ligne fais exactement. dans mes analyses je me suis dis que l'instance de l'objet B doit recevoir l'instance de l'objet A pur que les deux soient en fait un.
Si quelqu'un peut m'expliquer ce code, il pourra sauver une âme en détresse. et comment faire si l'on veut que l'objet A utilise un champ de l'objet B? Merci déjà.
Tout ce qui brille n'est pas or.
Afficher la suite 

2 réponses

Messages postés
16034
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
13 octobre 2019
88
0
Merci
Bonjour,

Il doit manquer un morceau de code pour que ça fonctionne...

Quelque chose comme ceci :

public class B {

     private A champ2;
     
     public B(A a) { // constructeur 1
          this.champ2 = a;
     }

     public B(Parametre p2) { // constructeur 2
          this(new A(p2));
     }
}

Dans le constructeur 2,
this(unObjetA)
appelles le constructeur 1 avec un paramètre de type A que l'on construit grâce à
new A(p2)
.

Voir : Using the this Keyword
Commenter la réponse de KX
Messages postés
33
Date d'inscription
samedi 4 décembre 2010
Statut
Membre
Dernière intervention
31 mars 2016
0
Merci
Merci à toi Kx pour ta promptitude à répondre à mes question. je plonge tout de suite sur ta suggestion et je reviens. Merci encore.
Commenter la réponse de stealone