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] : Héritage, interêt de super() ?

RoccatSub
RoccatSub
Niveau 5
08 octobre 2014 à 00:38:39

Salut tout le monde, j'avance dans Java et j'en suis venu à l'héritage, donc je saisis bien le principe, j'ai regardé deux trois morceau de code sur Github et sur des sites pour bien comprendre et je pense que ça va, par contre je me demande un truc.

(Je vous link le code que j'ai et j'explique)
Animals.java (main class)
http://pastebin.com/ngqpRUEE

AnimalGeneral.java
http://pastebin.com/kUNUHLZH

Cat.java
http://pastebin.com/x26qvPLe

Donc l'output de tout ça quand je compile "Animals.java" c'est ce qu'il faut "BARK BARK !! Meow", nickel donc, mais je me demande l'interêt de la "méthode tampon" dont se sert la source d'ou je tire mon code ? Car avec ou sans, mon résultat est le même (par méthode tampon je veux dire le public void tmpBark() dans Cat.java), c'est sûrement pas très important comme détail mais je préfère bien comprendre avant d'avancer

Merci d'avance

(Lien d'ou je tire mes sources :
https://github.com/ptoth/Inheritance )

Pseudo supprimé
Pseudo supprimé 08 octobre 2014 à 00:51:40

l'appel à super va te servir lorsque ton parent fait des choses utiles. Imaginons une classe hériter d'une "Badge" qui trace un très joli contour de badge avec de jolis effets et tout. En appelant super.dessiner(monContexteDeDessin) dans la méthode draw que tu surcharges, tu vas tracer tout ce que la classe Badge t'apporte, ensuite, tu pourras dessiner par dessus tes propres choses :)

TL;DR super te permet de réutiliser du code du parent proprement.

godrik
godrik
Niveau 30
08 octobre 2014 à 00:53:56

Bah la fonction n'est pas appelle donc forcement ca ne change rien.

super.foo() te permet d'appelle la fonction foo de ta classe parente. Ca peut etre utile si tu une partie du traitement de ta fonction est celui de la classe parente, mais qu'il faut que tu fases quelquechose en plus.

RoccatSub
RoccatSub
Niveau 5
08 octobre 2014 à 00:57:04

Ah oui d'accord je vois, assez clair (plus que ce que j'ai pu lire à droite à gauche), ça roule merci bien :D !

(Juste une autre de vérification ; "import newpackage.*;" équivaut à la fonction include de php ? Donc dans ce cas inclure tout le dossier (enfin package, je dois encore saisir la nuance) "newpackage" et ses fichiers ?)

Encore merci pour vos lumières !

Pseudo supprimé
Pseudo supprimé 08 octobre 2014 à 00:57:07

Pour compléter, c'est énormément utilisé lorsque tu fais des interfaces graphiques ou des jeux où l'on passe son temps à enrichir le fonctionnement des éléments hérités.

Pseudo supprimé
Pseudo supprimé 08 octobre 2014 à 01:00:02

Plus ou moins :D On parle de class path en Java, mais dans les faits oui, ce sont des dépendances que tu charges. Le * signifiant "tout ce qui se trouve en dessous", ce qui est déconseillé, on préfère en général n'importer que le strict minimum (Pas besoin de te casser la tête, les IDE font ça très bien pour toi).

RoccatSub
RoccatSub
Niveau 5
08 octobre 2014 à 01:03:41

Parfait, j'en sais assez pour ce soir alors \o ! Encore merci pour les réponses rapide

deepblue
deepblue
Niveau 16
08 octobre 2014 à 13:48:50


┊ Roccatsub, le 8 octobre 2014 à 00:57:04
https://www.jeuxvideo.com/forums/1-47-108620-1-0-1-0-java-heritage-interet-de-super.htm#message_108625

┊ Ah oui d'accord je vois, assez clair (plus que ce que j'ai pu lire à droite à gauche), ça roule merci bien :D !

┊ (Juste une autre de vérification ; "import newpackage.*;" équivaut à la fonction include de php ? Donc dans ce cas inclure tout le dossier (enfin package, je dois encore saisir la nuance) "newpackage" et ses fichiers ?)

┊ Encore merci pour vos lumières !

Non. "import foo.bar.boo" permet d'indiquer à ton programme qu'il y a une classe "boo" dans le package foo.bar et que tu veux l'utiliser. Il va donc l'inclure, en quelque sorte, dans le programme que tu écris. Même si c'est compliqué à comparer, tu peux imaginer que c'est un mix entre un use + autoload en php.

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