Polymorphisme static Java

Wenzel Messages postés 225 Date d'inscription   Statut Membre Dernière intervention   -  
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour au forum !

Je travaille toujours mon Java et j'ai un projet a rendre.

seulement je n'arrive pas à résoudre un bug de polymorphisme.

je vais schématiser tout ca :

admettons une class A {

protected static double taux = 1.25;


// et sa méthode :
protected double calculeSalaire(){
return ......*taux*........
}

}

puis une classe B qui extends de A {

// je redefinit ma variable statique

protected static double taux = 1.1;
protected double bonus;

// et ma méthode cacluleSalaire()
public double calculeSalaire(){
super.calculeSalaire() + bonus;

// ICI lors de l'appel a super, il prend la valeur 1.25 au lieu de 1.1, pourquoi ?
}
}

Merci de me faire partager vos connaissances ! =)
A voir également:

2 réponses

Wenzel Messages postés 225 Date d'inscription   Statut Membre Dernière intervention   14
 
je met où le this ?

le but est d'utiliser efficacement l'heritage.

donc j'ai besoin du super, et avec le polymorphisme, j'ai cru qu'il ferait appel aux bonnes variables.

Merci
1
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
une solution est de redéfinir ta méthode calculsalaire dans ta classe A

il suffit de demander un argument dans la signature..

admettons une class A {

protected static double taux = 1.25;


// et sa méthode :
protected double calculeSalaire(double unTaux){
return ......*taux*........
}

}

puis une classe B qui extends de A {

// je redefinit ma variable statique

protected static double taux = 1.1;
protected double bonus;

// et ma méthode cacluleSalaire()
public double calculeSalaire(double unTaux){
super.calculeSalaire(this.taux) + bonus;
0
choubaka Messages postés 39442 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
salut

l'appel à Super fait référence à la valeur de le classe A qui est la classe directement supérieure à ta classe B, c'est donc logique.
si tu veux récupérer la valeur 1.1, tu dois utiliser "this"
0