Mot-clé statique Java expliqué avec des exemples

Que signifie statique?

Lorsque vous déclarez une variable ou une méthode comme statique, elle appartient à la classe plutôt qu'à une instance spécifique. Cela signifie qu'il n'existe qu'une seule instance d'un membre statique, même si vous créez plusieurs objets de la classe ou si vous n'en créez pas. Il sera partagé par tous les objets.

Le mot-clé static peut être utilisé avec des variables, des méthodes, des blocs de code et des classes imbriquées.

Variables statiques

Exemple:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } }

La COUNTvariable sera partagée par tous les objets de cette classe. Lorsque nous créons des objets de notre classe Counter dans main, et accédons à la variable statique.

public class MyClass { public static void main(String[] args) { Counter c1 = new Counter(); Counter c2 = new Counter(); System.out.println(Counter.COUNT); } } // Outputs "2"

La sortie est 2, car la COUNTvariable est statique et est incrémentée de un à chaque fois qu'un nouvel objet de la classe Counter est créé. Vous pouvez également accéder à la variable statique en utilisant n'importe quel objet de cette classe, tel que c1.COUNT.

Méthodes statiques

Une méthode statique appartient à la classe plutôt qu'aux instances. Ainsi, il peut être appelé sans créer d'instance de classe. Il est utilisé pour modifier le contenu statique de la classe. Il existe certaines restrictions des méthodes statiques:

  1. La méthode statique ne peut pas utiliser de membres non statiques (variables ou fonctions) de la classe.
  2. La méthode statique ne peut pas utiliser de mots clés thisou super.

Exemple:

public class Counter { public static int COUNT = 0; Counter() { COUNT++; } public static void increment(){ COUNT++; } }

Les méthodes statiques peuvent également être appelées à partir d'une instance de la classe.

public class MyClass { public static void main(String[] args) { Counter.increment(); Counter.increment(); System.out.println(Counter.COUNT); } } // Outputs "2"

La sortie est 2 car elle est incrémentée par une méthode statique increament(). À l'instar des variables statiques, les méthodes statiques sont également accessibles à l'aide de variables d'instance.

Blocs statiques

Les blocs de code statiques sont utilisés pour initialiser les variables statiques. Ces blocs sont exécutés immédiatement après la déclaration des variables statiques.

Exemple:

public class Saturn { public static final int MOON_COUNT; static { MOON_COUNT = 62; } }
public class Main { public static void main(String[] args) { System.out.println(Saturn.MOON_COUNT); } } // Outputs "62"

La sortie est 62, car MOON_COUNTcette valeur est affectée à la variable dans le bloc statique.

Classes imbriquées statiques

Une classe peut avoir une classe imbriquée statique accessible en utilisant un nom de classe externe.

Exemple:

public class Outer { public Outer() { } public static class Inner { public Inner() { } } }

Dans l'exemple ci-dessus, il Innerest possible d'accéder directement à la classe en tant que membre statique de la classe Outer.

public class Main { public static void main(String[] args) { Outer.Inner inner = new Outer.Inner(); } }

Un des cas d'utilisation des classes imbriquées statiques dans Builder Pattern couramment utilisé en java.