CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Attribut static, héritage

pseuuuuuuuuuudo
pseuuuuuuuuuudo
Niveau 10
17 mai 2013 à 09:27:56

Yo,
Alors, j'ai un ensemble de classes (B, C, D, etc.) qui vont hériter d'une classe abstraite, A. Toutes ces sous-classes auront un attribut static "label", car ce que je veux c'est que chaque sous-classe ait un label associé à la classe. Dans toutes ces classes, j'aurais les mutateurs getLabel() et setLabel(). J'aurais voulu factoriser ça mais après quelques essais je me demande si c'est possible. Car si je fais ça :

Classe A : http://pastebin.com/Gzfeka94
Classes B et C : http://pastebin.com/Wg6RfUMU ; http://pastebin.com/KiXjMsBM
Lanceur : http://pastebin.com/c3RErpep

Mon affichage résulte en :

test
test
test
test
test
test
meeeeep
meeeeep
meeeeep

et non en

test
btest
ctest
test
btest
ctest
meeeeep
btest
ctest

comme ce à quoi je m'attendais. Mon explication c'est que le getLabel() n'est pas recopié, il est simplement appelé depuis la classe mère et du coup c'est le label de la classe mère qu'on récupère. Au passage j'avais mis les labels en private pour qu'ils ne soient pas hérités (avec usufruit du moins) de la classe mère, je sais pas vraiment si ça a son intérêt...
Par contre, si je recopie mes getters dans les sous-classes j'ai bien le résultat attendu. Est-ce que vous voyez un moyen de faire sans pour autant avoir à recopier mes getters dans chaque sous-classe ? J'avais pensé à deux choses :

1. Ne pas définir l'attribut label dans la classe mère, seulement faire une méthode abstraite getLabel(). Le problème c'est que ça force à recopier le même getter dans toutes les sous-classes...

2. Passer par une classe intermédiaire qui ferait le binding classe/label via une HashMap, a priori ç devrait faire ce que je veux mais je pense pas que ce soit top conceptuellement parlant...

Est-ce qu'une de ces deux solutions vous parait bonne ou en voyez-vous une autre ?

pseuuuuuuuuuudo
pseuuuuuuuuuudo
Niveau 10
17 mai 2013 à 09:30:04

Oups, mauvais forum, désolé... Je recopie dans le bon.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment