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 :

problème avec heritage en java


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut problème avec heritage en java
    J'ai un petit problème avec l'héritage en java. Je prefère la pratique donc voilà un exemple.
    classe mère principale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Modele extends JFrame {
       protected ArrayList quitListeners;
     
       public void addQuitListener(QuitListener listener) {
            quitListeners.add(listener);
        }
     
        public void removeQuitListener(QuitListener listener) {
            quitListeners.remove(listener);
        }
    }
    classe héritant de la classe mère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public class HeritModele  extends Modele {
    }
    classe héritant de la deuxième classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class ViewSaisieReglement{
        private HeritModele parent;
     
        public View (HeritModele parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
    classe où se trouve le main
    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
     
    public class TestReg extends HeritModele {
    	public static void main(String[] args)
    	{
    		new TestReg();
    	}
     
    	public TestReg()
    	{
    		setTitle("Window");
    		setVisible(true);
    		buildNewSalePane();
    	}
    	private void buildNewSalePane() {
            ViewSaisieReglement sale = new ViewSaisieReglement(this);
    	switchManager(sale.buildPanel());
        }
    }
    erreur
    C:\Java\ViewSaisieReglement.java:81: cannot resolve symbol
    symbol : method addQuitListener (ViewSaisieReglement)
    location: HeritModele
    this.parent.addQuitListener(this);
    ^

    Je ne comprends pas pourquoi la méthode addQuitListener de Modele n'est pas vu dans HeritModele

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Modele extends JFrame {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class HeritModele  extends FrameModele {
    C'est normal que les noms ne correspondent pas ???

    a++

  3. #3
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    c'est une erreur faite lors de la copie, cela a été modifié. Le problème demeurre

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Et ViewSaisieReglement n'implémente pas l'interface QuitListener...

    a++

  5. #5
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    si au fait j'ai pas voulu mettre ton le code. J'ai simplement mais la partie qui pose problème
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    public class Modele extends JFrame {
       protected ArrayList quitListeners;
     
       public void addQuitListener(QuitListener listener) {
            quitListeners.add(listener);
        }
     
        public void removeQuitListener(QuitListener listener) {
            quitListeners.remove(listener);
        }
    }
     
     
    public class HeritModele  extends Modele {
     
    }
     
    public class ViewSaisieReglement implements QuitListener {
        private HeritModele parent;
     
        public View (HeritModele parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
     
     
    public class TestReg extends HeritModele {
    	public static void main(String[] args)
    	{
    		new TestReg();
    	}
     
    	public TestReg()
    	{
    		setTitle("Window");
    		setVisible(true);
    		buildNewSalePane();
    	}
    	private void buildNewSalePane() {
            ViewSaisieReglement sale = new ViewSaisieReglement(this);
    	switchManager(sale.buildPanel());
        }
    }
    je precise que quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class ViewSaisieReglement implements QuitListener {
        private Modele parent;
     
        public View (Modele parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
    ça marche

    mais quand c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class ViewSaisieReglement implements QuitListener {
        private HeritModele parent;
     
        public View (HeritModele parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
    là ca ne marche pas

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 145
    Points : 125
    Points
    125
    Par défaut
    En analysant le code de ton premier message, je vois le pb suivant:

    Dans la classe Modele, tu définis la méthode addQuitListener avec comme paramètre un QuitListener:
    addQuitListener(QuitListener listener)

    Dans la classe ViewSaisieReglement, tu essaye d'utiliser la méthode addQuitListener avec comme paramètre un ViewSaisieReglement:
    addQuitListener(this)

    Ce n'est donc pas la même méthode, addQuitListener(ViewSaisieReglement viewSaisieReglement) n'est pas défini dans la classe Modele.

  7. #7
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    si c'est du même type car il hérite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class ViewSaisieReglement implements QuitListener{}

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Encore une fois ton code n'est pas correct ou mal copier-coller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class ViewSaisieReglement implements QuitListener {
        private HeritModele parent;
    
        public View (HeritModele parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
    Donc fait de bon copier-coller ou donne nous toutes les erreurs de compilations (en essayant de les comprendre avant)

    a++

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 145
    Points : 125
    Points
    125
    Par défaut
    Effectivement, la classe ViewSaisieReglement implémente QuitListener dans ta deuxième version de ton code, mais pas dans la première. C'est pour ça que le compilateur ne pouvait pas résoudre la méthode:

    C:\Java\ViewSaisieReglement.java:81: cannot resolve symbol
    symbol : method addQuitListener (ViewSaisieReglement)

    C'est difficile de te suivre si tu changes les données du problème à chaque fois...

  10. #10
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    Ok cette fois ci j'ai pris les vrais noms des classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class FrameModele extends JFrame implements WindowChangeListener, WindowListener, MouseListener, MouseMotionListener
    {
      protected ArrayList quitListeners;
     
       public void addQuitListener(QuitListener listener) {
            quitListeners.add(listener);
        }
     
        public void removeQuitListener(QuitListener listener) {
            quitListeners.remove(listener);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class IFrameP  extends com.ibm.iwt.frame.modele.FrameModele {
      // ajoit d'autres mèthodes
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class ViewSaisieReglement implements QuitListener {
     
        //private FrameModele parent;
        private IFrame parent;
        //public ViewSaisieReglement(FrameModele parent) {
        public ViewSaisieReglement(IFrame parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
    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
     
     
    public class TestReg extends IFrameP {
    	public static void main(String[] args)
    	{
    		new TestReg();
    	}
     
    	public TestReg()
    	{
    		setTitle("Window");
    		setVisible(true);
    		buildNewSalePane();
    	}
    	private void buildNewSalePane() {
            //ViewReglement sale = new ViewReglement(this);
            ViewSaisieReglement sale = new ViewSaisieReglement(this);
    		switchManager(sale.buildPanel());
        }
    }
    erreur
    C:\Java\infiniteprogressdemo\InfiniteProgressDemo\ViewSaisieReglement.java:84: cannot resolve symbol
    symbol : method addQuitListener (Bd.component.ViewSaisieReglement)
    location: class com.ibm.iwt.frame.IFrame
    this.parent.addQuitListener(this);
    ^
    1 error


    je pécise que dans la classe quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class ViewSaisieReglement implements QuitListener {
     
        private FrameModele parent;
        //private IFrame parent;
        public ViewSaisieReglement(FrameModele parent) {
        //public ViewSaisieReglement(IFrame parent) {
            this.parent = parent;
            this.parent.addQuitListener(this);
        }
    }
    ça marche
    Alors que je voudrais que ça marche avec IFrameP. C'est ce qui m'arrage

  11. #11
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    IFrame et IFrameP : c'est quoi la différence ?

  12. #12
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    je voulais dire IFrameP

  13. #13
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    personne ne peut me donner une solution

  14. #14
    Membre expérimenté
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Points : 1 640
    Points
    1 640
    Par défaut
    Ben IFrameP n'a pas de méthode addQuitListener. Il faut lui en rajouter une !

  15. #15
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    IFrameP obtient cette methode par héritage de la classe FrameModel

  16. #16
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yLaplace
    IFrameP obtient cette methode par héritage de la classe FrameModel
    Es-tu bien sûr de cela ! Vérifie encore ton code et surtout qu'il n'y ai pas de classes homonymes qui trainent...

    a++

  17. #17
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    les méthodes sont de portées publique dans FrameModel. Et la classe IFrameP hérite de cette classe par définition de la classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public class IFrameP  extends com.ibm.iwt.frame.modele.FrameModele {
    }
    Alors je ne sais pas pourquoi elle nhériterait pas des méthodes de FrameModel du moment où elles ont une portée publique

Discussions similaires

  1. problème avec web services java netbeans
    Par amanimannou dans le forum Services Web
    Réponses: 1
    Dernier message: 01/04/2011, 17h56
  2. Problème avec les vecteurs Java
    Par choko83 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 22/05/2008, 18h52
  3. [SDX] [XML] Problèmes avec la plateforme Java SDX
    Par mlny84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 29
    Dernier message: 18/10/2007, 13h06
  4. Gros problème avec le C++/Java
    Par astrofan dans le forum Windows
    Réponses: 9
    Dernier message: 26/05/2007, 18h31
  5. probléme avec mon code JAVA et MYSQL
    Par ulysse031 dans le forum JDBC
    Réponses: 5
    Dernier message: 10/05/2007, 01h46

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