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

  • Votes
  • Date
  • Date décroissante
  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. 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;
  2. 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"