Bonjour à tous et bon confinement...
J'ai une classe avec deux constructeurs :
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 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++; } }
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
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; }
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 a.setref(ref); a.setdes(des); this.prix=prix;
avec l'instruction
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++; }
Tout cela fonctionne correctement sauf que si j'utilise :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 super()
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 ?
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; }
Merci si vous avez des idées
Partager