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

avec Java Discussion :

Transtypage de classe


Sujet :

avec Java

  1. #1
    A&Z
    A&Z est déconnecté
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Transtypage de classe
    Salut tout le monde, j'ai un petit problème que je n'arrive pas à résoudre, voilà, j'ai 2 classes A et B je veux que les objets de type A puisse "évoluer" au type B après un traitement (sans utiliser l'héritage) car je veux que ce soit réalisable dans l'autre sens également.
    Merci infiniment!

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Je ne suis pas expert mais la première question qui me vient à l'esprit c'est "Pourquoi pas d'héritage ?"

    Ca parait être la solution idéale non ?

    J'ai ptet pas très bien compris mais si tu fais une classe AB (qui contient uniquement tout ce qui est commun aux classes A et B, l'intersection des deux d'un certain point de vue), qui implémente deux interfaces A et B (qui elles ne contiennent que ce qui est spécifique à A et B) ça ressemble à une solution.


    Si on fait ça (et que je raconte pas n'importe quoi) tu devrais pouvoir faire des trucs genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A a = new AB();
    B b = new AB();
    B bb = (B) a; // pour voir un A comme un B
    A aa = (A) b; // et l'inverse
    Par contre (encore une fois je croise les doigts, je crois pas dire de connerie mais j'ai rien testé), je pense que ça ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AB ab = new A();
    AB aabb = new B();
    // Je vois pas trop comment java pourrait comprendre ça vu qu'il s'agit là d'instancer une interface
    edit : En fait je réalise que là il n'y a effectivement pas d'héritage à proprement parler puisqu'il s'agit d'interfaces, mais la différence est légère (en dehors du fait qu'on peut pas hériter de plusieurs classes alors qu'on peut implémenter plusieurs interfaces).

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MoMotte Voir le message
    Salut,

    Je ne suis pas expert mais la première question qui me vient à l'esprit c'est "Pourquoi pas d'héritage ?"

    Ca parait être la solution idéale non ?

    J'ai ptet pas très bien compris mais si tu fais une classe AB (qui contient uniquement tout ce qui est commun aux classes A et B, l'intersection des deux d'un certain point de vue), qui implémente deux interfaces A et B (qui elles ne contiennent que ce qui est spécifique à A et B) ça ressemble à une solution.


    Si on fait ça (et que je raconte pas n'importe quoi) tu devrais pouvoir faire des trucs genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A a = new AB();
    B b = new AB();
    B bb = (B) a; // pour voir un A comme un B
    A aa = (A) b; // et l'inverse
    Par contre (encore une fois je croise les doigts, je crois pas dire de connerie mais j'ai rien testé), je pense que ça ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AB ab = new A();
    AB aabb = new B();
    // Je vois pas trop comment java pourrait comprendre ça vu qu'il s'agit là d'instancer une interface
    edit : En fait je réalise que là il n'y a effectivement pas d'héritage à proprement parler puisqu'il s'agit d'interfaces, mais la différence est légère (en dehors du fait qu'on peut pas hériter de plusieurs classes alors qu'on peut implémenter plusieurs interfaces).
    Salut,
    En fait pour répondre à ta question de début, la question posée ressemble à un exercice, ce qui pourrait expliquer cette contrainte (mais je peux me tromper)
    Sinon on ne peut pas instancier d'interfaces en Java, comment instancier quelque chose qui ne définit pas le corps des méthodes ?

  4. #4
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 207
    Points : 215
    Points
    215
    Par défaut
    Citation Envoyé par A&Z Voir le message
    Salut tout le monde, j'ai un petit problème que je n'arrive pas à résoudre, voilà, j'ai 2 classes A et B je veux que les objets de type A puisse "évoluer" au type B après un traitement (sans utiliser l'héritage) car je veux que ce soit réalisable dans l'autre sens également.
    Merci infiniment!
    Bonjour,

    La solution que j'utiliserais dans ton cas (même si je préfèrerais l'héritage) serait d'implémenter :
    - un constructeur de la classe A prenant en paramètre une instance de la classe B à partir de laquelle il définirait les attributs de l'instance de la classe A à créer
    - un constructeur de la classe B prenant en paramètre une instance de la classe A à partir de laquelle il définirait les attributs de l'instance de la classe B à créer

    Ensuite tu pourrais faire quelquechose du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A a = new A();
    // Traitement sur a
    B b = new B(a);
    Et de même dans l'autre sens.

Discussions similaires

  1. [D4]type originel après transtypage de classe
    Par omen999 dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2009, 10h37
  2. Transtypage de classe incorrect
    Par Shibron dans le forum Rave
    Réponses: 1
    Dernier message: 09/02/2009, 15h45
  3. Réponses: 3
    Dernier message: 28/01/2009, 14h02
  4. transtypage d'interface en classe
    Par T0ch dans le forum Langage
    Réponses: 5
    Dernier message: 27/05/2004, 19h42

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