Polymorphisme static Java

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 ! =)

2 réponses

  1. Modérateur
    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
    1. 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
      1. Modérateur
        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