Bonjour,
J'ai créé deux classes Etudiant et Ingenieur. Dans la classe Etudiant j'ai la méthode toString() affiche des infos entre autre la méthode calculMoyenne().
La classe Ingenieur est une sous-classe d'Etudiant. Je modifie la méthode calculMoyenne() et aussi la méthode toString(). Le toString() d'Ingenieur veut afficher le toString() d'Etudiant puis son calculMoyenne() => cf le code.
Mon problème : le super.toString() dans toString() d'Engenieur utilise la méthode calculMoyenne() d'Engenieur au lieu d'Etudiant?? Pourquoi?? C'est normal??
Classe Etudiant
Classe Ingenieur
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
26
27
28
29
30
31
32
33
34
35
36
37 public class Etudiant { //champs privé private String nom; private int[] notes=new int[3]; private int nombreNotes=0; public Etudiant(String n){ nom=n; } public boolean ajouteNote(int n){ if(nombreNotes<3){ notes[nombreNotes]=n; nombreNotes++; return true; }else{ return false; } } public float calculMoyenne(){ float moyenne=0; if(nombreNotes>0){ for(int i=0;i<nombreNotes;i++){ moyenne+=notes[i]; } moyenne/=nombreNotes; } return moyenne; } public String toString(){ return nom+" ; nombre de notes au qcm: "+nombreNotes+ " ; moyenne qcm: "+this.calculMoyenne(); } }
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
26 public class Ingenieur extends Etudiant { private int grandOral=0; private int promo; public Ingenieur(String n, int p) { super(n); promo=p; } public void setGrandOral(int go) { grandOral = go; } public float calculMoyenne(){ return (super.calculMoyenne())/2; } public String toString(){ String res=super.toString(); res+=" promo "+promo; res+=" ; Grand Oral: "+grandOral; res+=" ; moyenne total: "+this.calculMoyenne(); return res; } }
Partager