Classe statique en Java
Dans le langage Java, nous ne pouvons pas créer une classe externe en tant que classe statique, mais il existe un privilège de créer une classe interne imbriquée en tant que classe statique. Les propriétés d’une classe statique sont les suivantes.
Une classe interne statique ne peut jamais accéder à un membre non statique de la classe externe.
Une classe interne statique n’a besoin d’aucune référence de classe externe pour accéder aux variables membres.
La classe statique ne peut jamais être instanciée. Par conséquent, les méthodes sont directement accessibles par le nom de la classe.
Vous trouverez ci-dessous le code qui illustre les deux lignes ci-dessus.
package static_class;
public class StaticInnerClass {
static int i = 1;
int j = 9;
public static void main(String[] args) {
StaticInnerClass s = new StaticInnerClass();
// s.InnerClass.printNum();
InnerClass.printNum();
}
public static class InnerClass {
public static void printNum() {
System.out.println(i);
// System.out.println(j);
}
}
}
Dans le code ci-dessus, nous avons créé une classe externe avec le nom StaticInnerClass
. Cette classe a un champ statique, un champ non statique, une méthode statique et une classe interne statique. Dans la méthode principale statique, nous avons créé une instance d’une classe externe nommée objet s
. Lorsque nous essayons d’accéder à la méthode printNum()
de la classe interne avec un objet de classe externe, c’est-à-dire s.InnerClass.printNum();
IDE donne une erreur de compilation, qui indique que la classe interne statique n’a besoin d’aucune référence de l’objet de référence de classe externe pour accéder aux méthodes de classe interne. Par conséquent, nous pouvons accéder directement aux méthodes de la classe interne par nom de classe.
Maintenant quand on voit la définition de la méthode printNum()
. Il a deux instructions d’impression. Imprime d’abord le champ statique de la classe externe, et deuxièmement, essaie d’imprimer la variable non statique de la même. L’instruction System.out.println(i);
est valide, ce qui signifie que l’on ne peut accéder qu’aux membres statiques à partir du contexte statique. Mais en regardant la deuxième déclaration, System.out.println(j);
est invalide, car on ne peut jamais accéder aux membres non statiques à partir du contexte statique.
Dans la classe Java, il n’y a aucune possibilité de créer une classe externe static
. Mais, nous pouvons imiter le comportement en utilisant des mots-clés définis.
L’utilisation du mot-clé final
est de rendre la classe finale. Ce mot-clé interdit à la classe de s’étendre davantage. La raison étant qu’il n’y a aucune utilité dans l’extension d’une classe statique.
Utilisez le mot-clé private
pour rendre le constructeur privé car cela empêche l’instanciation d’une classe statique. Comme le dit la propriété de la classe statique, on ne peut jamais l’instancier.
Utilisez le mot-clé static
avec les variables membres et les méthodes membres. Puisqu’aucun objet n’est créé, on ne peut jamais accéder aux champs et fonctions membres non statiques.
Vous trouverez ci-dessous une classe statique définie et son utilisation trouve dans la création de la classe Utility
, où la création d’objets de cette classe n’est pas requise.
package static_class;
public final class StaticClass {
private static int a = 1;
private StaticClass() {
System.out.println("Cannot be instantiated");
}
public static void printNum() {
System.out.println(a);
}
}
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn