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
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();
	}
}
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
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;
	}
}