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] Déclarer des instances de classes internes


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut [Débutant] Déclarer des instances de classes internes
    Bonjour,
    Je viens de découvrir que les instances d'une classe interne peuvent être créées en dehors de la classe externe directe, mais je n'arrive pas à faire fonctionner l'exemple suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class X {
        class Y {}
    }
     
    class test {
        public static void main(String[] a) {
            X x = new X();
            Y = x.new Y();
        }
    }
    test.java:9: cannot find symbol
    symbol : variable Y
    location: class test
    Y = x.new Y();
    ^
    1 error
    Je n'ai pas ici de problème pratique à résoudre ; le but de ma question est juste de comprendre le fonctionnement des classes internes.

    Merci pour votre aide
    ++ Kloss

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 118
    Points : 82
    Points
    82
    Par défaut
    et
    ca marche pas?

  3. #3
    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,


    Tu dois déclarer le nom complet de la classe (sinon le compilateur cherche une classe Y standard) :

    Par contre je te déconseille d'utiliser cela dans une vrai application...

    a++

    [edit] grillé... mais il ne faut pas oublier le nom de la variable

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Ah zut j'avais deux erreurs (shame on me pour l'oubli de la variable)...

    Merci pour vos réponses alex'l et adiGuba, ça marche.

    Par contre je te déconseille d'utiliser cela dans une vrai application...
    Ouep je trouve ça un peu tordu le bout de code au dessus. Mais bon j'ai des exercices à faire qui sont très peu pratiques ; à chaque fois l'énoncé propose du code complètement loufoque avec foule d'imbrications, de classes anonymes, internes, d'héritage à tout va, tout ça bien agrémenté de modificateurs, pour voir si on a compris les concepts de la POO

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Tiens par exemple :

    Pourquoi seules les classes internes peuvent-elles être à la fois statiques et abstraites ?

    Edit: ah je viens de comprendre (seules les classes internes peuvent être statiques). Dieu que la question est mal posée...

  6. #6
    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 kloss
    Edit: ah je viens de comprendre (seules les classes internes peuvent être statiques). Dieu que la question est mal posée...
    Pour info : les classes internes statiques ne sont plus liées à une instance de la classe conteneur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class X {
        static class Y {}
    }
    On peut instancier une classe Y sans X :
    a++

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 56
    Points : 42
    Points
    42
    Par défaut
    Merci pour cettre précision !

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

Discussions similaires

  1. Créer des instances de classes EMF dans Eclipse avec une jolie IHM
    Par obernard dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 24/02/2009, 19h21
  2. Envoyer des instances de classes via TCP
    Par ZouBi dans le forum C++
    Réponses: 8
    Dernier message: 02/08/2008, 17h07
  3. Réponses: 3
    Dernier message: 18/02/2006, 23h21
  4. [débutant] vector et instances de class
    Par melvar dans le forum Langage
    Réponses: 4
    Dernier message: 11/02/2006, 23h49
  5. Conditions de destruction des instances de classes
    Par elvivo dans le forum Général Python
    Réponses: 4
    Dernier message: 29/12/2004, 17h16

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