Problème d'heritage - toString()
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?? :calim2: Pourquoi?? C'est normal?? 8O
Classe Etudiant
Code:
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();
}
} |
Classe Ingenieur
Code:
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;
}
} |