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 :

Question héritage et initialisation


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Chef de projet Informatique
    Inscrit en
    Février 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet Informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 49
    Points : 50
    Points
    50
    Par défaut Question héritage et initialisation
    Bonjour,

    J'ai une question sur l'héritage.

    J'ai une classe Fruit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class Fruit {
     
    }
    une classe Pomme qui hérite de fruit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public classe Pomme extends Fruit {
    }
    J'ai deux variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pomme maPomme;
    Fruit monFruit;
    Je veux créer une nouvelle pomme en copiant les infos de mon fruit, je pensais le faire en castant la variable monFruit mais ça ne fonctionne pas, quelle est la solution ? Je n'ai pas envie de créer un constructeur dans fruit qui prend tous les paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maPomme = (Pomme)monFruit;
    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par loudo Voir le message
    Je veux créer une nouvelle pomme en copiant les infos de mon fruit
    C'est un peu bizarre, ce que tu veux faire.
    Tu as un objet de type Fruit déjà instancié, et tu voudrais le "transformer" en Pomme ? Soit c'était déjà une pomme et il n'y a rien à faire, soit c'était en fait une poire et il est étrange de vouloir en faire une pomme... Es-tu sûr de ne pas avoir un problème de modélisation ?



    Citation Envoyé par loudo Voir le message
    je pensais le faire en castant la variable monFruit mais ça ne fonctionne pas
    C'est tout à fait normal : le cast sert à indiquer dans le programme que tu sais que tel ou tel Fruit est en fait une Pomme, afin de pouvoir y appliquer les méthodes de Pomme sans erreur de compilation. Mais si à l'exécution le Fruit n'est pas vraiment une Pomme, ça ne peut pas marcher !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Fruit fruit1 = new Pomme();
    Pomme pomme1 = (Pomme) fruit1; // fruit1 est effectivement une pomme, tout se passe bien
     
    Fruit fruit2 = new Fruit();
    Pomme pomme2 = (Pomme) fruit2; // fruit2 n'est pas une pomme ! erreur lors de l'exécution


    Citation Envoyé par loudo Voir le message
    quelle est la solution ? Je n'ai pas envie de créer un constructeur dans fruit qui prend tous les paramètres.
    Pour créer un nouvel objet Pomme à partir d'un objet Fruit, il va forcément falloir passer par un constructeur (dans la classe Pomme). Tu peux par exemple définir un constructeur de Pomme prenant en paramètre un Fruit...
    Par contre, je ne comprends pourquoi tu dis ne pas vouloir d'un "constructeur dans fruit qui prend tous les paramètres". Soit tu as besoin de "tous ces paramètres" pour construire ton Fruit, et alors ça veut dire que ce constructeur existe déjà, soit tu as besoin de "tous ces paramètres" pour construire ta Pomme, et alors nul besoin de les reporter dans la classe Fruit Bref, j'ai le sentiment qu'il me manque des précisions sur ce que tu veux faire...

  3. #3
    Membre du Club
    Profil pro
    Chef de projet Informatique
    Inscrit en
    Février 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet Informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Fruit {
     
      String a;
      String b;
     
    }
     
    public class Pomme {
     
      String c;
     
    }
    Ailleurs dans l'application j'ai une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    creerPomme(Fruit monFruit) {
     
      Pomme maPomme = new Pomme();
     
      // Je voulais en une ligne affecter les infos de monFruit à maPomme sans 
      // passer par les setter ou un constructeur avec plusieurs paramètres
     
    }
    Est ce que tu comprends mieux ?

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Cela ne se peut pas, il faut utiliser les setter et getter.

  5. #5
    Membre du Club
    Profil pro
    Chef de projet Informatique
    Inscrit en
    Février 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Chef de projet Informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Questions héritage class static
    Par Général03 dans le forum Langage
    Réponses: 12
    Dernier message: 13/05/2011, 15h40
  2. Réponses: 4
    Dernier message: 05/08/2010, 11h05
  3. Enum, question héritage!
    Par remip dans le forum Langage
    Réponses: 7
    Dernier message: 23/03/2010, 18h46
  4. Question sur l'initialisation de wrappers
    Par Griffith dans le forum Langage
    Réponses: 7
    Dernier message: 25/03/2009, 09h45
  5. [C#] Question héritage
    Par taptoola dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/12/2006, 16h29

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