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 :

pb d'héritage java


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 188
    Par défaut pb d'héritage java
    Bonjour,
    J'ai une classe Evolution.java, et une autre classe EvolutionMensuelle.java héritant de Evolution.java

    Ma classe EvolutionMensuelle a seulement 2 attributs en + par rapport à Evolution.
    J'ai une autre classe, un objet de type Evolution que je veux convertir en EvolutionMensuelle.
    Comment puis-je faire?

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    je ne suis pas sûr de comprendre ta question

    mais en tout cas un objet EvolutionMensuelle est implicitement un objet Evolution

    Parc contre pour passer du type parent au type enfant, je pense qu'il faut que tu crées une méthode ou tu passerai tes 2 attributs en param et qui ferai un new EvolutionMensuelle.

    Mais bon, je dis ça mais je suppose qu'un pro te répondra avec certitude sur ce point.

  3. #3
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Si j'ai bien compris ta question, tu as un object déclaré comme Evolution, mais qui est en fait "réellement" une EvolutionMensuelle. Autrement dit quelque chose dans ce goût là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Evolution evolution = new EvolutionMensuelle();
    Pour le convertir en Evolution mensuelle, il faut utiliser un cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EvolutionMensuelle em = (EvolutionMensuelle)evolution;
    Tu pourras ainsi utiliser les méthodes propres à EvolutionMensuelle sur em.

    Mais attention, tu dois être sur que evolution est bien une EvolutionMensuelle, sinon tu auras une exception (ClassCastException)
    Le mieux est d'entourer le cas d'un if
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    EvolutionMensuelle em = null;
    if (evolution instanceof EvolutionMensuelle){
      em = (EvolutionMensuelle)evolution;
    } else {
      //a voir
    }
    J'espère que j'avais bien compris la question.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Je vais essayer à mon tour

    Je crois comprendre que tu voudrais changer le type d'un objet Evolution après que celui-ci a été instancié. Ce n'est pas possible en Java

  5. #5
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Citation Envoyé par had35
    Je vais essayer à mon tour

    Je crois comprendre que tu voudrais changer le type d'un objet Evolution après que celui-ci a été instancié. Ce n'est pas possible en Java

    Sisi mais en utilisant la méthode présentée par Le Y@m's
    J'ai été obligé de faire une opération identique sur un de mes projets.

    Voici comment j'ai procédé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Class Evolution {
         //attributs de Evolution
         int exemple;
         [...]
         //constructeur par défaut
         //implicite si aucun constructeur, à déclarer si il en existe implémentés
         public Evolution(){} 
         //constructeur "par recopie"
         public Evolution(Evolution evol){
              //tu copies chacun des attributs de l'objets
              this.exemple  = evol.getExemple();
              [...]
         }
         //autres méthodes
         [...]
    }
    
    
    Class EvolutionMensuelle {
         //attributs de Evolution Mensuelle
         [...]
         //constructeur par défaut
         public EvolutionMensuelle(){};
         //constructeur à partir d'une classe mère
         public EvolutionMensuelle(Evolution evol){
              super(evol);
              //instanciation et initialisation des attributs supplémentaires si besoin
              [...]
         }
         //autres méthodes
         [...]
    }
    Ainsi dans ton code tu pourras "caster" comme tu voulais ton objet de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Evolution evol = new Evolution();
    [...]
    evol = new EvolutionMensuelle(evol);
    //ou encore
    EvolutionMensuelle evolM = new EvolutionMensuelle(evol);
    Voila, j'espère que ca répond à ta question

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Citation Envoyé par BizuR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Class Evolution {
         //attributs de Evolution
         int exemple;
         [...]
         //constructeur par défaut
         //implicite si aucun constructeur, à déclarer si il en existe implémentés
         public Evolution(){} 
         //constructeur "par recopie"
         public Evolution(Evolution evol){
              //tu copies chacun des attributs de l'objets
              this.exemple  = evol.getExemple();
              [...]
         }
         //autres méthodes
         [...]
    }
    
    
    Class EvolutionMensuelle {
         //attributs de Evolution Mensuelle
         [...]
         //constructeur par défaut
         public EvolutionMensuelle(){};
         //constructeur à partir d'une classe mère
         public EvolutionMensuelle(Evolution evol){
              super(evol);
              //instanciation et initialisation des attributs supplémentaires si besoin
              [...]
         }
         //autres méthodes
         [...]
    }
    C'est une super bonne idée ça

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Tu peux ajouter un constructeur à ta classe EvolutionMensuelle qui prend un objet Evolution en paramètre.
    Ensuite pour "convertir" un objet Evolution en EvolutionMensuelle tu as juste à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Evolution evolu = new Evolution();
    //  ...
    EvolutionMensuelle evoluMens = new EvolutionMensuelle(evol);
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

Discussions similaires

  1. Héritage Java (problème avec la classe test)
    Par adil-01 dans le forum Général Java
    Réponses: 7
    Dernier message: 04/12/2011, 16h25
  2. [JSTL] taglib et héritage java
    Par jayjaypg22 dans le forum Taglibs
    Réponses: 1
    Dernier message: 22/10/2010, 10h43
  3. Héritage Java, Hibernate
    Par redkan dans le forum Hibernate
    Réponses: 2
    Dernier message: 29/09/2010, 10h32
  4. Problème d'héritage java
    Par Gordon Freeman dans le forum Langage
    Réponses: 11
    Dernier message: 29/06/2009, 18h03
  5. [Java] Héritage et flux d'Objet
    Par guejo dans le forum CORBA
    Réponses: 2
    Dernier message: 22/02/2005, 11h14

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