Bonjour à tous et bon confinement...
J'ai une classe avec deux constructeurs :
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
18
19
20
21
22
23
 
public class Article {
  private String ref;
  private String des;
  protected double prix;
  private static int nbInstances; 
 
//Constructeurs
public Article() {
  ref="";
  des="";
  prix=0;
  nbInstances++;
 
 
  }
public Article(String ref,String des, double prix) {
  this.ref=ref;
  this.des=des;
  this.prix=prix;
  nbInstances++;
  }
  }
et une autre classe Livre dérivée de Article :
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
18
19
20
21
22
23
24
25
 
public class Livre extends Article{
  private long ISBN;
  private short nbre_pages;
  private String Auteur;
 
  //Constructeurs
  public Livre() {
	  super();
	  ISBN=0;
	  nbre_pages=0;
	  Auteur="";
  }
  Article a=new Article();
 
  public Livre(String ref,String des,double prix,long ISBN,short nbre_pages,String Auteur) {
	  a.setref(ref);
	  a.setdes(des);
	  this.prix=prix;
	  //super();
	  this.ISBN=ISBN;
	  this.nbre_pages=nbre_pages;
	  this.Auteur=Auteur;
 
  }
LE 1er constructeur fait appel au constructeur de la super classe Article : super(), mais le second j'ai été obligé de créer une instance de Article a,pour pouvoir avoir access aux accesseurs (get et set) d'une part et aussi reécrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 a.setref(ref);
  a.setdes(des);
  this.prix=prix;
au lieu de récupérer le constructeur de la super classe (le deuxième) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 public Article(String ref,String des, double prix) {
  this.ref=ref;
  this.des=des;
  this.prix=prix;
  nbInstances++;
  }
avec l'instruction
Tout cela fonctionne correctement sauf que si j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 public Livre(String ref,String des,double prix,long ISBN,short nbre_pages,String Auteur) {
          super();
	  this.ISBN=ISBN;
	  this.nbre_pages=nbre_pages;
	  this.Auteur=Auteur;	  
  }
Je n'aurai pas acces aux ref,des et prix.Ma question est de savoir comment dans un cas similaire pouvoir réutiliser un constructeurs d'une super classe sans avoir quasiment à tout réécrire ?Est ce possible ? Est ce que ma façon d e faire est correcte et n'y a t il pas d'autres solutions sans avoir a créer une instance de la super classe ?
Merci si vous avez des idées