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] Comparer deux sous-classes

Calmacil
Calmacil
Niveau 47
22 avril 2013 à 15:16:38

Bonjour

J'ai une superclass : Person, et j'ai deux sub-class "Men" et "Women"

Je souhaite faire une simple fonction "isMen". Existe-t-il une fonction par défaut dans Java qui permet de savoir si un élément d'un tableau de type "Person" est de sub-type "Man" ou "Woman" ?

Merci :)

godrik
godrik
Niveau 30
22 avril 2013 à 15:36:56

instanceOf devrait te permettre de faire ca. Mais souvent dans un modele objet, si tu as beson de connaitre le type derive, c'est que tu as un probleme de conception.

Calmacil
Calmacil
Niveau 47
22 avril 2013 à 15:45:41

Ah oui merci, instanceof (je débute)

Par contre, dans mon cas je vois pas en quoi ça serait un problème de conception, tu as un tableau de "Person" et tu veux savoir si cette "Person" i est un "Man" ou une "Woman" avec instanceof

[-ArK-]
[-ArK-]
Niveau 29
22 avril 2013 à 16:10:21

"Dans ce cas on peut se demander si passer par une sous-classe était vraiment judicieux, peut-être qu'un attribut sexe aurait suffit ? "
:d) Non, les femmes ont besoin d'une méthode goKitchen() :oui:

ok je sors :hap:

Pseudo supprimé
Pseudo supprimé 22 avril 2013 à 16:16:20

C'est très rare d'avoir besoin de connaître la classe en programmation objet. Si la conception est correcte, les objets doivent se traiter de façon transparente.

On ne fera pas

if (person.isMan()) {
person.slack();
} else {
person.ironClothes();
}

mais plutôt

person.doSomething();

Avec la méthode doSomething() effectuant la bonne action selon l'implémentation dans les classes en héritant/l'implémentant.
Man et Woman feront quelque chose de différent avec.

Bunyan
Bunyan
Niveau 17
22 avril 2013 à 19:23:16

Soit ça, soit faire une méthode abstraite "isMan" implémentée par Man (renvoi "true") et Woman (renvoi "false") pour ensuite faire le machin.
Mais à choisir, autant implémenter ce que Raspberry-Pi propose.

Rikkel
Rikkel
Niveau 9
23 avril 2013 à 18:48:35

Oui Raspberry a raison, il faut voir les notions d'héritage ainsi. Plutôt que de vérifier le type d'instance de chaque objet, le mieux est de définir une classe abstraite, définie de manière différente selon la sous-classe.
Ca fait assez malpropre de faire des Instance of partout, et c'est plus galère à modifier.

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