Polymorphisme static Java

Wenzel Messages postés 254 Statut Membre -  
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 ! =)

2 réponses

  1. Wenzel Messages postés 254 Statut Membre 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
    1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      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
  2. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    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