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 :

Compréhension du rôle de static sur une méthode


Sujet :

avec Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 684
    Points : 147
    Points
    147
    Par défaut Compréhension du rôle de static sur une méthode
    Bonjour,

    Voici mon programme d'orgine:
    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
    public class Points2 
    {
      public double abs; 
      public double ord; 
      public static int varStat; 
     
      public void initialiser ( double x, double y )
      {
        abs = x; ord = y;
      }
     
       public static double calculDistance (Points2 M, Points2 N)
       {
        double distance;
        distance = Math.sqrt ( (N.abs - M.abs) * (N.abs - M.abs) + (N.ord - M.ord) * (N.ord - M.ord) );
        return distance;
      }
     
      public double calculDistance (Points2 P)
      {
        double distance;
        distance = Math.sqrt( (this.abs - P.abs) * (this.abs - P.abs) + (this.ord - P.ord) * (this.ord - P.ord) );
        return distance;
     } 
    }
     
    public class Tester6Points2 
    {    
     public static void main (String [ ] args ) 
     {
       Points2 A = new Points2 ( ); 
       Points2 B = new Points2 ( ); 
       A.initialiser (2,7); 
       B.initialiser (3,13); 
       double longeur = A.calculDistance (B);
       System.out.println("distance entre A et B =" + longeur );        
     }
    }
    Dans celui-ci, il y a une partie que je ne comprend pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      public static double calculDistance (Points2 M, Points2 N)
       {
        double distance;
        distance = Math.sqrt ( (N.abs - M.abs) * (N.abs - M.abs) + (N.ord - M.ord) * (N.ord - M.ord) );
        return distance;
      }
     
      public double calculDistance (Points2 P)
      {
        double distance;
        distance = Math.sqrt( (this.abs - P.abs) * (this.abs - P.abs) + (this.ord - P.ord) * (this.ord - P.ord) );
        return distance;
    La méthode calculDistance avec static:
    • N est B
    • M est A

    Est-ce que c'est ça ?


    La méthode calculDistance sans static:

    • this est A
    • P est B

    Est-ce que c'est ça ?


    Merci d'avance pour votre aide.

  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 : 55
    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,

    Quand tu déclares une variable A comme ça Points2 A = new Points2();, tu crées une instance de Points2 et tu fais pointer A dessus.
    Quand on déclare un paramètre d'une méthode comme ça calculDistance(Points2 P) on définit un paramètre de type Points2 qui s'appelle P : le paramètre est l'équivalent d'une variable dans la méthode, qui pointera sur l'instance qu'on passera en paramètre lors de l'appel de la méthode. Donc si tu appelles la méthode comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Points2 A = new Points2();
    Points2 B = new Points2();
    A.calculDistance(B);
    L'instance pointée par B sera passée en paramètre : dans la méthode P pointera donc sur cette même instance (qui est pointée par B lors de l'appel). This représente toujours l'instance courante, celle pour laquelle la méthode est appelée : donc dans la méthode, ça correspond bien à l'instance pointée par A, puisque c'est sur cette variable qu'on appelle la méthode.

    Quand tu appelles la méthode non statique comme ça double longeur = A.calculDistance (B);, tu l'appelles sur l'instance A, en passant l'instance B en paramètre : donc dans la méthode, this étant l'instance à qui appartient la méthode est bien l'instance A, et le paramètre qui s'appelle P dans la méthode, correspond bien à l'instance B passée en paramètre.

    Pour la méthode statique, ça dépend comment tu passes les paramètres : il y a 2 paramètres, M, puis N. Donc quand tu appelles la méthode comme ça Points2.calculDistance(A, B), l'instance référencée par A est dans le premier paramètre donc c'est M dans la méthode qui référence l'instance, et B dans le second, donc N dans la méthode.

Discussions similaires

  1. Reflection java sur une méthode static
    Par Proxy dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 01/03/2012, 15h47
  2. [VBA] information sur une méthode
    Par stolx_10 dans le forum Access
    Réponses: 27
    Dernier message: 19/09/2006, 17h27
  3. blocage sur une méthode synchronized
    Par rockelite dans le forum Général Java
    Réponses: 3
    Dernier message: 03/05/2006, 22h28
  4. [ActiveX] Retour de BSTR sur une méthode externe
    Par mr.saucisse dans le forum MFC
    Réponses: 28
    Dernier message: 11/01/2006, 15h47
  5. Réponses: 3
    Dernier message: 16/04/2004, 16h51

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