IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Passer différents types d'objet dans une même méthode


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Passer différents types d'objet dans une même méthode
    Dans un écosystème, j'ai une classe Basilic qui hérite d'une superclasse Végétal qui hérite elle-même d'une superclasse EtreVivant.

    D'un autre côté j'ai une classe Homme qui hérite de Mammifère qui hérite elle-même de Animal qui hérite d'EtreVivant aussi. Homme possède une méthode manger() pour s'alimenter. Il peut manger un Végétal mais aussi un Animal (poissons, oiseaux, etc.)

    je tape donc :
    Basilic basilic = new Basilic(15); // 15 est un num d'identification
    Homme homme = new Homme("Philippe");
    homme.manger(basilic);

    Le problème vient de ma méthode manger. Dans Homme j'ai mis :
    public void manger(EtreVivant unEtre)

    Le type EtreVivant me permet de passer en paramètre aussi bien un objet Animal que Vegetal. Le problème c'est que en faisant ainsi, je ne conserve que les attributs de la classe EtreVivant. Je perds les attribut comme estComestible et numero définis dans la sous-classe Vegetal par exemple.

    Une solution serait l'overloading en définissant deux méthodes manger:
    public void manger(Vegetal unEtre)
    public void manger(Animal unEtre)

    Le problème est que je risque d'intégrer d'autres types d'EtreVivant ce qui m'obligera à faire des modifs sur toutes mes classes à chaque fois. N'y a-t-il pas une autre solution en Java, comme de déclarer des types multiples pour un paramètres du genre manger(Vegetal, Animal unEtre) ?? Le casting ne fonctionne pas non plus car au moment où je caste dans ma méthode manger, l'objet unEtre a déjà perdu une partie de ses infos.

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ce que tu peux faire, c'est avoir une interface Mangeable qui définit les méthodes communes de quelque chose qui se mange.

    Sinon, tu peux aussi passer par plusieurs méthodes avec des attributs différents. Ou encore dernière manière, mais pas la meilleure, tu utilises instanceof dans ta méthode manger pour définir de quel type est l'aliment.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/02/2010, 23h00
  2. Deux Champs de type Recherche liés dans une même liste.
    Par hassine dans le forum Configuration
    Réponses: 6
    Dernier message: 16/09/2009, 16h55
  3. Deux Champs de type Recherche liés dans une même liste.
    Par hassine dans le forum SharePoint
    Réponses: 6
    Dernier message: 16/09/2009, 16h55
  4. préciser le type des objets dans une classe dérivée d'arraylist
    Par JCD21 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/06/2008, 18h04
  5. Réponses: 1
    Dernier message: 20/01/2007, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo