Polymorphisme static Java
Wenzel
Messages postés
254
Statut
Membre
-
choubaka Messages postés 5535 Date d'inscription Statut Modérateur Dernière intervention -
choubaka Messages postés 5535 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 ! =)
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 ! =)
2 réponses
-
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-
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;
-
-
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"