Le mot clé static en Java
Le mot clé static en Java est un modificateur utilisé pour économiser l’espace mémoire. Cela aide à gérer la mémoire occupée par les objets, les variables et les définitions de méthodes. Le mot-clé static garantit qu’une seule instance d’une méthode d’objet ou d’une variable concernée est créée en mémoire.
L’anatomie du mot clé statique
Dans le langage de programmation Java, le mot-clé static indique que le membre en question appartient à lui-même et non à une instance de ce type.
Cela signifie qu’une seule instance de ce membre statique est créée et est partagée par toutes les instances de la classe.
Le mot clé static
static est un modificateur qui s’applique aux éléments suivants:
- Des blocs
- Des variables
- Des méthodes
Pour créer un membre statique (bloc, variable, méthode), utiliser le mot-clé static. Lorsqu’un membre est déclaré statique, il est possible d’y accéder avant la création des objets de sa classe et sans référence à aucun objet. Par exemple, dans le programme java ci-dessous, nous accédons à la méthode statique mymethod() sans créer un objet de la classe Foo.
public class Foo { // méthode static static void mymethod() { System.out.println("Méthode statique de la classe Foo"); } public static void main(String[] args) { mymethod(); } }
La sortie
Méthode statique de la classe Foo
Blocs statiques
Si vous devez effectuer un calcul pour initialiser vos variables statiques, vous pouvez déclarer un bloc statique qui est exécuté exactement une fois, lors du premier chargement de la classe. Considérez le programme Java suivant illustrant l’utilisation de blocs statiques.
public class Foo { // Variable statique static int x = 2; static int y; // Block statique static { System.out.println("Bloc statique initialisé."); y = x * 3; } public static void main(String[] args) { System.out.println("La valeur de x est : "+x); System.out.println("La valeur de y est : "+y); } }
La sortie
La valeur de x est : 2 La valeur de y est : 6
Variables statiques
Lorsqu’une variable est déclarée statique, une seule copie de la variable est créée et partagée entre tous les objets au niveau de la classe. Les variables statiques sont des variables globales. Toutes les instances de la classe partagent la même variable statique.
public class Foo { static int X = 3; // variable statique int y = 2; // variable non statique public static void main(String[] args) { System.out.println("X+1 = " + (X + 1)); Foo foo = new Foo(); System.out.println("y+1 = " + (foo.y + 1)); } }
La sortie
X+1 = 4 y+1 = 3
Ici, dans le programme ci-dessus, la variable nommée X est déclarée statique alors que y est une variable non statique. Désormais, dans la méthode main, vous devez créer une instance de la classe pour accéder à la variable d’instance y. Toutefois, il est possible d’accéder directement à la variable X.
Méthodes statiques
Lorsqu’une méthode est déclarée avec le mot clé static, donc c’est une méthode statique. L’exemple le plus courant d’une méthode statique est la méthode main(). Comme indiqué ci-dessus, il est possible d’accéder à tout membre statique avant de créer des objets de sa classe, et sans référence à aucun objet. Les méthodes déclarées comme static comportent plusieurs restrictions à savoir:
- Une méthode statique ne peut utiliser « this » et « super » dans son corps.
- Une méthode statique ne peut accéder aux variables non statiques ni aux méthodes de la classe.
- Une méthode statique ne peut être redéfinée dans une sous-classe.
Exemple d’une méthode statique:
public class Foo { // méthode static static void mymethod() { System.out.println("Méthode statique de la classe Foo"); } public static void main(String[] args) { mymethod(); } }
La sortie
Méthode statique de la classe Foo
Les points clés à retenir
- Étant donné que les variables statiques appartiennent à une classe, elles sont accessibles directement à l’aide du nom de la classe et ne nécessitent aucune référence d’objet.
- Les variables statiques ne peuvent être déclarées qu’au niveau de la classe
- Les variables statiques sont accessibles sans initialisation d’objet
- Une méthode statique ne peut utiliser « this » et « super » dans son corps.
- Une méthode statique ne peut accéder aux variables non statiques ni aux méthodes de la classe.
- Une méthode statique ne peut être redéfinie dans une sous-classe.