Portée des variables en Java

La portée d’une variable détermine où dans votre code vous pouvez accéder à cette variable. En Java, il existe quatre types de portée :

  1. Variables d’instance : Ces variables sont déclarées à l’intérieur d’une classe mais en dehors d’une méthode. Elles sont accessibles à toutes les méthodes de la classe.
public class MaClasse {
    // Variable d'instance
    int maVariable;
}
  1. Variables de classe : Aussi appelées variables statiques, elles sont déclarées comme static à l’intérieur d’une classe mais en dehors d’une méthode. Elles sont accessibles à toutes les méthodes de la classe, même sans créer une instance de la classe.
public class MaClasse {
    // Variable de classe
    static int maVariable = 5;
}
  1. Variables locales : Ces variables sont déclarées à l’intérieur d’une méthode ou d’un bloc de code. Elles ne sont accessibles qu’à l’intérieur de ce bloc.
public void maMethode() {
    // Variable locale
    int maVariable;
}
  1. Paramètres de méthode : Ces variables sont les paramètres passés à une méthode. Elles sont accessibles à l’intérieur de cette méthode.
public void maMethode(int maVariable) {
    // maVariable est un paramètre de méthode
}




A colored pencil drawing style illustration depicting programming concepts involving static and instance variables. The scene should be detailed like a colored sketch, showing a large, rooted tree representing a static variable, firmly planted in the ground, symbolizing its fixed position in memory. Around the tree are several smaller, mobile plants on wheels, representing instance variables, which can duplicate and move freely in memory. The setting is a park-like environment, drawn with colored pencils to convey the abstract programming concepts in a vibrant, artistic way.Accès aux variables
    public class Main {
    public static void main(String[] args) {

        // Accès à la variable de classe
        System.out.println("Variable de classe : " + MaClasse.maVariableStatique);

        // Création d'une instance de MaClasse
        MaClasse obj = new MaClasse();

        // Appel de la méthode maMethode
        obj.maMethode(40);

        System.out.println(MaClasse.maVariableStatique);
        MaClasse.maVariableStatique = 15;
        System.out.println(MaClasse.maVariableStatique);

        // J'accède directement à la variable de classe aussi appelé variable static (VarStatic) 
        // sans avoir besoin de créer une instance
        MaClass2.VarStatic = "toto";

        // J'accède à la variable de class (VarInstance) en créent une instance (nouveau objet) 
        // de la class 
        MaClass2 NouveauObjet = new MaClass2();
        MaClass2 NouveauObjet2 = new MaClass2();

        NouveauObjet2.VarInstance = "JoJo";

        NouveauObjet.VarInstance = "Tintin";

        // J'accède à ma méthode static de MaClass2
        MaClass2.MethodeStatic();

        System.out.println(MaClass2.MethodeStatic());

    }
}
 
public class MaClasse {
    // Variable de classe (statique)
    static int maVariableStatique = 10;

    // Variable d'instance
    int maVariableInstance = 20;

    public void maMethode(int parametre) {
        // parametre est un paramètre de méthode
        System.out.println("Paramètre de méthode : " + parametre);

        // maVariableLocale est une variable locale à cette méthode
        int maVariableLocale = 30;
        System.out.println("Variable locale : " + maVariableLocale);

        // Accès à la variable d'instance
        System.out.println("Variable d'instance : " + this.maVariableInstance);

        MaClass2.MethodeStatic();

    }
}

import java.util.List;

public class MaClass2 {
    
    // Variable d'instance
    public String VarInstance;


    // Variable static 
    public static String VarStatic;
    

    // Une variable static 
    private static double version = 1.1;

    // Methode static qui retourn la valeur de la variable version : 1.1
    // Une méthode static doit utiliser ou retourner une variable static
    public static double MethodeStatic() {
        return version;
    }
    
}

Dans cet exemple, maVariableStatique est une variable de classe accessible à toutes les méthodes de la classe, même sans créer une instance de la classe. maVariableInstance est une variable d’instance, ce qui signifie qu’elle appartient à une instance particulière de la classe MaClassemaVariableLocale est une variable locale qui n’est accessible qu’à l’intérieur de la méthode maMethode(). Enfin, parametre est un paramètre de méthode qui est passé à la méthode maMethode() et est accessible à l’intérieur de cette méthode.

 Portée des variables

 
public class ExemplePortee {
    // Portée de classe
    private static int variableClasse = 1;

    public static void main(String[] args) {
        // Portée de méthode
        int variableMethode = 2;

        System.out.println("Variable de classe : " + variableClasse);
        System.out.println("Variable de méthode : " + variableMethode);

        // Portée de boucle
        for (int i = 0; i < 2; i++) {
            System.out.println("Variable de boucle : " + i);
        }

        // Portée de bloc
        {
            int variableBloc = 4;
            System.out.println("Variable de bloc : " + variableBloc);
        }
    }
}

 Dans cet exemple, variableClasse a une portée de classe et peut être utilisée partout dans la classe. variableMethode a une portée de méthode et n’est valide que dans la méthode main. La variable i a une portée de boucle et n’est valide que dans la boucle for. Enfin, variableBloc a une portée de bloc et n’est valide que dans le bloc délimité par les accolades.

 

Variable Statique

En Java, une variable de classe, également appelée variable statique, peut être accédée directement à l’aide du nom de la classe, sans avoir besoin de créer une instance de la classe. Voici comment vous pouvez le faire :

 
public class MaClasse {
    // Variable de classe (statique)
    static int maVariableStatique = 10;
}

public class Main {
    public static void main(String[] args) {
        // Accès à la variable de classe
        System.out.println("Variable de classe : " + MaClasse.maVariableStatique);
    }
}

Variable Statique et Final

Dans cet exemple, maVariableStatique est une variable de classe dans MaClasse. Vous pouvez y accéder en utilisant MaClasse.maVariableStatique.

Il est important de noter que puisque les variables de classe sont partagées entre toutes les instances d’une classe, toute modification apportée à une variable de classe affectera toutes les autres instances de la classe. Par conséquent, elles doivent être utilisées avec prudence

 

En Java, les variables static et final sont des modificateurs de variables qui ont des significations différentes. Le mot-clé static indique qu’une variable appartient à la classe et non à une instance de la classe. Cela signifie que toutes les instances d’une classe partagent la même variable static et que toute modification apportée à cette variable par l’une des instances affectera toutes les autres instances.

D’autre part, le mot-clé final indique qu’une variable est constante et ne peut pas être modifiée une fois initialisée. Cela signifie que si vous déclarez une variable comme final, sa valeur ne peut plus être modifiée ultérieurement dans le programme.

Il est important de noter que les modificateurs static et final peuvent être utilisés ensemble pour créer des constantes de classe. Par exemple, vous pouvez déclarer une constante de classe en utilisant les mots-clés static et final comme suit:

public class MaClasse {
    public static final int MA_CONSTANTE = 10;
}

Dans cet exemple, nous avons déclaré une constante de classe appelée MA_CONSTANTE et lui avons attribué la valeur 10. Cette valeur ne peut plus être modifiée ultérieurement dans le programme et est partagée par toutes les instances de la classe MaClasse


 

Modifié le: jeudi 25 avril 2024, 10:05