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 :

Methodes abstraites aux types surchargés


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Methodes abstraites aux types surchargés
    Bonjour,

    Je voudrai réaliser la fonctionnalité suivante (version simplifiée) :

    soit la classe abstraite C, et deux classes concrètes héritées CInt(contenant un parametre int entier) et CFloat (contenant un parametre float flottant).

    la classe abstraite C contient deux méthodes abstraites :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    abstract void setValue(Object o);
    abstract Object getValue();
    je voudrai pouvoir surcharger ces méthode dans CInt de façon à avoir :

    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void setValue(Object o) {
     entier = (int) o; // ici Eclipse refuse le cast
    }
    soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void setValue(int o) {
     entier = o; // ici Eclipse se plaint que je ne définisse pas la méthode setValue(Object o) ... logique
    }
    et pour l'autre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int getValue() { // Ici le type de retour est incompatible avec la méthode abstraite
     return entier;
    }
     
    Object getValue() {
     return entier; // Ici c'est ok mais dans le code appelant je ne pourrai pas caster en int
    }
    Et bien sûr, de façon similaire pour CFloat, et qu'il soit possible de rajouter de nouvelles classes héritées de la même façon sans devoir modifier la classe mère.

    J'imagine que c'est courant, ou que c'est un design pattern connu mais je n'arrive pas à le trouver. Je prends surement le problème par le mauvais bout, et çà commence à m'énerver alors je m'en remets à la facilité de la communauté internet ><

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Il faut caster o en Integer dans setValue, et non pas int. Et compiler en java 5.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci, comment chercher compliqué quand c'est simple ...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2009, 03h16
  2. [Classe abstraite] Problème de surcharge
    Par Bleys dans le forum Langage
    Réponses: 8
    Dernier message: 26/04/2007, 11h44
  3. [POO] Interface et méthode abstraite en PHP5
    Par Invité dans le forum Langage
    Réponses: 9
    Dernier message: 24/04/2006, 00h54
  4. Pour convertir les dates aux types "datetime" sous
    Par nnn2050 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 15h30
  5. [Language]Synchroniser une méthode abstraite
    Par jeje99 dans le forum Langage
    Réponses: 23
    Dernier message: 15/12/2005, 17h54

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