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 :

Classe interne, classe externe


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut Classe interne, classe externe
    Bonjour, j'ai une question technique : voilà ce qui me 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
     
    public class ClasseExt
    {
     Truc monTruc;
     
     void fctBidon()
     {
      monTruc.fonction(this); // ça marche ici
     }
     
     static class ClasseInterne
     {
       void fctBidonDeux()
       {
        monTruc.fonction(ClasseExt.this); // ça marche pas pcq statique, mais Pourquoi ???
       }
     } 
    }
    Je crois que je n'ai pas bien pigé ce que static implique.... Pouvez-vous m'éclairer ? Si la classe interne est statique et que la classe externe ne l'est pas, ça implique quoi ??

    Merci.
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Ca implique essentiellement que tu peux faire référence à ta classe interne de façon statique, ie dans le cadre ta classe mais hors d'un membre : le this n'a donc aucun sens, exactement de la même façon qu'il n'en n'aurait pas dans le cadre d'une méthode statique.

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Citation Envoyé par Rei Ichido Voir le message
    Ca implique essentiellement que tu peux faire référence à ta classe interne de façon statique, ie dans le cadre ta classe mais hors d'un membre : le this n'a donc aucun sens, exactement de la même façon qu'il n'en n'aurait pas dans le cadre d'une méthode statique.
    Non.

    Citation Envoyé par mathieu_t Voir le message
    Je crois que je n'ai pas bien pigé ce que static implique.... Pouvez-vous m'éclairer ? Si la classe interne est statique et que la classe externe ne l'est pas, ça implique quoi ??
    Static sur un membre signifie que ce dernier appartient a une classe et non a une instance.

    Sur une inner classe, ceci implique que l'on peut accéder à ce type sans passer par une instance de l'outer classe.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A {
        class B {}
    }
     
    class C {
        public static void main(String[] argv) {
            A.B b = new A().newB(); // obligé d'instancier un A pour instancier un B sans le static
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A {
        static class B {}
    }
     
    class C {
        public static void main(String[] argv) {
            A.B b = new A.B(); // On peut instancier directement B
        }
    }
    Par ailleurs, le mot clé static ne peut s'utiliser que sur une inner classe, ici il est interdit de l'utiliser sur A car ca n'aurait plus aucun sens.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Merci pour vos réponses !

    C'est plus clair.

    Mathieu.
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

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

Discussions similaires

  1. classe interne classe statique
    Par Nayila dans le forum Langage
    Réponses: 5
    Dernier message: 22/01/2008, 21h22
  2. Réponses: 14
    Dernier message: 10/02/2007, 13h27
  3. [Conception] Classe interne ou externe
    Par storm_2000 dans le forum Langage
    Réponses: 3
    Dernier message: 13/01/2007, 16h05
  4. [Conception] Class interne ou externe ?
    Par TTKiBosse dans le forum Langage
    Réponses: 13
    Dernier message: 10/01/2007, 10h36
  5. Heritage de classe avec classes internes
    Par Regis.C dans le forum Langage
    Réponses: 11
    Dernier message: 27/04/2005, 12h19

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