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 :

probleme d'héritage


Sujet :

Langage Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 146
    Points : 150
    Points
    150
    Par défaut probleme d'héritage
    bonjour, je vais essayer d'etre clair, ce qui est assez dificile vu mon probleme.

    voila mes sources simplifiées :

    ABRSimple.java :
    public class ABRSimple {

    protected ArbreBinaireSimple<ABREntry<Key,Value>> arbre;

    public void supprimer(key) {
    ...
    find(arbre,key);
    ...
    }

    protected ArbreBinaireSimple<ABREntry<Key,Value>> find(ArbreBinaireSimple<ABREntry<Key,Value>>,Key) {
    ...
    }
    }
    AVLSimple.java :
    public class AVLSimple extends ABRSimple {

    protected ArbreBinaireSimple<AVLEntry<Key,Value>> arbre;

    protected ArbreBinaireSimple<AVLEntry<Key,Value>> find(ArbreBinaireSimple<AVLEntry<Key,Value>>,Key) {
    ...
    }

    }
    AVLEntry.java :
    public class AVLEntry extends ABREntry {
    ...
    }
    en fait, je veux changer le type de la'ttribut d'une classe par rapport à sa classe mere.
    dans la classe mere, le type est ArbreBinaireSimple<ABREntry<Key,Value>>
    dans la classe fille le type doit etre ArbreBinaireSimple<AVLEntry<Key,Value>>

    sachant queAVLEntry hérite de ABREntry

    par la meme occasion, j'aimerai modifier uniquement une méthode protected (find) qu'utilise plusieurs autres méthode public pour qu'elle fasse des opérations supplémentaires avec le nouveau type.

    eclipse me dis :
    the method find (de la classe fille) has the same erasure as find (de la classe mere) but do not override it
    en me soulignant
    find(ArbreBinaireSimple<AVLEntry<Key, Value>> a, Key cle)
    comment dois-je faire pour arriver à mes fins ?
    Best Web Design Software ever - http://tweakstyle.com

  2. #2
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    je saisis pas trop mais un truc me semble bizard :
    protected ArbreBinaireSimple<AVLEntry<Key,Value>> find(ArbreBinaireSimple<AVLEntry<Key,Value>>,Key)
    et ne serait-ce pas :
    protected ArbreBinaireSimple<AVLEntry<Key,Value>> find(ArbreBinaireSimple<AVLEntry<Key,Value>>,Key key) ?

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 146
    Points : 150
    Points
    150
    Par défaut
    si c'est ca, c'est meme :
    protected ArbreBinaireSimple<AVLEntry<Key,Value>> find(ArbreBinaireSimple<AVLEntry<Key,Value>> arbre,Key key)

    mais c'est du réécrit.
    Best Web Design Software ever - http://tweakstyle.com

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 146
    Points : 150
    Points
    150
    Par défaut
    un exemple plus concret :

    Coordonnees.java :
    public class Coordonnees {

    protected int x;
    protected int y;

    }
    Coordonnees3D.java :
    public class Coordonnees3D extends Coordonnees{

    protected int z;

    }
    Contenant.java :
    public class Contenant<Type> {

    protected Type a;

    }
    Plan.java :
    public class Plan {

    protected Contenant<Coordonnees> c;

    public void dessinerLigne(Contenant<Coordonnees> co) {


    }
    }
    Espace.java :
    public class Espace extends Plan {

    protected Contenant<Coordonnees3D> c;

    public void dessinerLigne(Contenant<Coordonnees3D> co) {

    }
    }
    et eclipse me renvoie cette erreur :
    the method dessignerLigne(Contenant<Coordonnees3D>) of type Espace as the same erasure as dessignerLigne(Contenant<Coordonnees>) of type Plan but does not override it
    (ps : dans mon exemple, contenant ne sert a rien mais dans mes classes le contenant sert (c'est un arbre binaire)
    Best Web Design Software ever - http://tweakstyle.com

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    146
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 146
    Points : 150
    Points
    150
    Par défaut
    a noter que si on ne se sert pas du contenant ca marche.

    Plan.java :
    public class Plan {

    protected Coordonnees c;

    public void dessinerLigne(Coordonnees co) {


    }
    }
    Espace.java :
    public class Espace extends Plan {

    protected Coordonnees3D c;

    public void dessinerLigne(Coordonnees3D co) {

    }
    }
    Best Web Design Software ever - http://tweakstyle.com

  6. #6
    Membre habitué Avatar de White Rabbit
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 122
    Points : 148
    Points
    148
    Par défaut
    Je pense que tu as un petit problème au niveau de ta modélisation ou que tu fais mauvais usage de l'héritage (je ne dis pas que c'est pour ça que tu as un problème avec Eclipse) :

    Tu as une classe Espace qui contient une variable(de type) Coordonnees3D mais ton Espace hérite de ta classe Plan qui contient une variable Coordonnees donc
    ta classe Espace contient en plus de la variable Coordonnees3D la variable Coordonnees.

    Ce qui au final, te fait 5 variables de type primitif pour ton Espace.

    J'ajouterais que si tu code des entités qui ne servent a rien, elles n'ont rien à faire dans ton code.

    J'espère t'avoir éclairé un peu.

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut
    Pour résoudre ton problème, cfr http://lroux.developpez.com/article/...ldcardGenerics

    D'ailleurs, je te conseille fortement de lire tout le chapitre consacré aux génériques.

    Bonne lecture.

    Vincent
    Vincent Brabant

    Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

Discussions similaires

  1. probleme d'héritage en java
    Par lavoiture dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 21/11/2008, 16h59
  2. Un probleme d'héritage
    Par ranell dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2007, 21h17
  3. [IE] Probleme d'héritage de couleur
    Par Marco85 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/03/2007, 22h35
  4. [vb.net][form] probleme avec l'héritage
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/10/2005, 16h01
  5. [débutant] Probleme avec switch et héritage
    Par durk dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2005, 09h48

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