# Héritage JAVA

**URL:** <https://www.debian-fr.org/t/heritage-java/53657>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 12:24 UTC](https://www.debian-fr.org/t/heritage-java/53657 "2016-02-21T12:24:18Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 21, 2016, 12:24 UTC](https://www.debian-fr.org/t/heritage-java/53657/1 "2016-02-21T12:24:18Z")

</div>

Bonjour voici un cas d’école :

```auto
package verger;

public class fruitsAPepin extends fruits {
   public String chaire = "Inconnue";
   public croquer methodeConsommation;

   public fruitsAPepin() {
    super();
    createMethodeConsommation();
   }

   public void createMethodeConsommation() {
    methodeConsommation = new croquer();
   }

   public class croquer extends manger {
     public Boolean fruitsTendre() {
       return (chaire.equals("Tendre"));
      }
   }
}
```

Un autre objet :

```auto
package verger;

public class pommes extends fruitsAPepin {
   public String chaire = "Tendre";
}
```

Alors que j’ai l’impression de surcharger la variable “chaire”, l’objet methodeConsommation continu d’utiliser “Inconnue” … Pourquoi ?

---

<div class="post-metadata">

**Author:** ![debianhadic](https://www.debian-fr.org/user_avatar/www.debian-fr.org/debianhadic/32/3870_2.png) [@debianhadic](https://www.debian-fr.org/u/debianhadic)\
**Post date:** [Février 21, 2016, 12:24 UTC](https://www.debian-fr.org/t/heritage-java/53657/2 "2016-02-21T12:24:20Z")

</div>

Je viens de m’apercevoir qu’en passant par un setter ça fonctionnait.  
La surcharge n’existe pas sur les variables ?

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 12:24 UTC](https://www.debian-fr.org/t/heritage-java/53657/3 "2016-02-21T12:24:20Z")

</div>

[quote=“debianhadic”]Je viens de m’apercevoir qu’en passant par un setter ça fonctionnait.  
La surcharge n’existe pas sur les variables ?[/quote]  
Je ne connais pas très bien Java, mais le comportement est cohérent avec ce qui se passe en C++ : tu ne modifies pas la variable existante fruitsAPepin::chaire mais tu crées une nouvelle variable pommes::chaire tandis que methodeConsommation continue d’utiliser fruitsAPepin::chaire.  
Bref, ça me semble tout à fait normal, et le pattern habituel est effectivement d’utiliser un setter dans le constructeur de la classe dérivée.
