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 :

[Débutant] petit problème de "protected"


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Par défaut [Débutant] petit problème de "protected"
    Bonjour...

    j'ai un problème, mais plutôt que d'essayer de le raconter, je vais le mettre en situation. J'ai 3 classes (pour simplifier)

    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
    package monPackage;
     
    public class A()
    {
        private B monB = new B();
     
        public A()
        {
            //ici ya tout ce qu'il faut pour que ça marche...
        }
     
        protected B getMonB()
        {
            return monB;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package monPackage;
     
    public class B()
    {
        public B()
        {
            //ici ya tout ce qu'il faut pour que ça marche...
        }
     
        private void affiche()
        {
            System.out.println("youpi, j'ai réussi à compiler !!")
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    package monPackage;
     
    public class C()
    {
        public C()
        {
            //ici ya tout ce qu'il faut pour que ça marche...
        }
     
        protected void faitRien()
        {
            getMonB().affiche();
        }
    }
    Et là, c'est le drame : quand je veux le compiler (on imagine que j'ai un main() quelquepart), j'ai un message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method getMonB() is undefined for the type C.
    Pourtant il me semblait que les méthodes déclarées protected étaient visibles par toutes les classes du même package...

    So help me, please.

  2. #2
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected void faitRien() 
        { 
            getMonB().affiche(); 
        }
    C'est pas un problème avec protected: le compilateur recherche une méthode getMonB() dans ta classe C qui n'existe pas.


    Il faut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class A() 
    { 
        private B monB = new B(); 
     
        public A() 
        { 
            //ici ya tout ce qu'il faut pour que ça marche... 
        } 
     
        protected static B getMonB() 
        { 
            return monB; 
        } 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class C() 
    { 
        public C() 
        { 
            //ici ya tout ce qu'il faut pour que ça marche... 
        } 
     
        protected void faitRien() 
        { 
            A.getMonB().affiche(); 
        } 
    }
    ou un truc du genre ou avoir un référence sur un objet de type A dans C.

  3. #3
    Membre chevronné Avatar de guignol
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    getmonB() est une fonction de la classe A. COmment peux-tu l'appeler si tu n'as pas instancié une variable de type A????

    [EDIT] Ouap post quasi simultané dsl

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    "protected" est accesible par les sous classe et non par le package.
    si tu veux rendre une méthode accesible par le package tu dois utiliser "friendly"

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 46
    Par défaut
    Désolé, j'ai vraiment bouletté sur ce coup-là... Maintenant que vous me le dites, ça me parait évident.

    Merci beaucoup beaucoup beaucoup !!

  6. #6
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Citation Envoyé par barbu0055
    "protected" est accesible par les sous classe et non par le package.
    si tu veux rendre une méthode accesible par le package tu dois utiliser "friendly"
    Faux protected est accessible par les sous-classes et par le package ...

    Fais un test.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Par défaut
    Autant pour moi , c'est un truc que j'avai lu.

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

Discussions similaires

  1. [Débutant] petit problème
    Par angsthase dans le forum C++
    Réponses: 5
    Dernier message: 21/02/2006, 19h24
  2. [débutant]petit problème sur formulaire avec onglets
    Par Christophe93250 dans le forum Access
    Réponses: 2
    Dernier message: 06/01/2006, 10h46
  3. [débutant] petit problème de selection...
    Par Avalon dans le forum Access
    Réponses: 5
    Dernier message: 04/01/2006, 23h33

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