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 :

Méthode et variable static [Débutant(e)]


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 47
    Points : 23
    Points
    23
    Par défaut Méthode et variable static
    Bonsoir à tous!
    J'ai par exemple deux classes A et B. Quand je me place dans la classe B et que je veux utiliser x et f() qui sont dans A, le compilateur m'exige que la variable x et la methode f() doivent être static. Je ne comprends pas bien cette logique du compilateur. Qu'est ce qui se passe dans sa tête?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A{
    int x;
    f();
    }
     
    class B{
    int y;
    g();
    .....
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    C'est probablement parce que tu appelles ta méthode en écrivant :

    ou

    Ce qui signifie que f() et x sont normalement static (c'est la syntaxe de Java) : une variable static (ou une méthode) est partagée entre toutes les instances de la classe.

    Pour appeler une méthode non static, on doit avoir une instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A a = new A(); // on crée une instance par le new A() et on la stocke dans la variable a de type A
    a.f(); // là, on peut appeler la méthode d'instance (non static donc)
    int truc = a.x; // là un peut lire la variable d'instance (à condition toutefois d'être dans une méthode d'une classe du même package, car il n'y a pas de modifier indiqué devant la déclaration de x (comme public par exemple), donc le modifier default est utilisé, qui signifie ça).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Salut,

    C'est probablement parce que tu appelles ta méthode en écrivant :

    ou

    Ce qui signifie que f() et x sont normalement static (c'est la syntaxe de Java) : une variable static (ou une méthode) est partagée entre toutes les instances de la classe.

    Pour appeler une méthode non static, on doit avoir une instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A a = new A(); // on crée une instance par le new A() et on la stocke dans la variable a de type A
    a.f(); // là, on peut appeler la méthode d'instance (non static donc)
    int truc = a.x; // là un peut lire la variable d'instance (à condition toutefois d'être dans une méthode d'une classe du même package, car il n'y a pas de modifier indiqué devant la déclaration de x (comme public par exemple), donc le modifier default est utilisé, qui signifie ça).
    Merci Joel.drigo
    c'est vrai que quand je fais A.f() , A.x dans la classe B, f() et x s'applique sur la classe A, donc à tous les éléments de A. Donc tous les éléments de A ont la même méthode f() et la même variable x. f() et x doivent être static

Discussions similaires

  1. [Langage] Méthode inline et variable static
    Par Cheps dans le forum Langage
    Réponses: 5
    Dernier message: 04/10/2008, 00h08
  2. Réponses: 3
    Dernier message: 16/01/2008, 09h07
  3. [héritage] héritage d'une variable static
    Par yaya44 dans le forum Langage
    Réponses: 14
    Dernier message: 29/09/2004, 13h36
  4. Variable static avec thread
    Par oxor3 dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 27/08/2004, 11h45
  5. [paint] Méthode déclaré en static
    Par Bugmaster dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 23/08/2004, 15h51

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