Peut une classe statique en Java ?
La réponse est OUI, nous pouvons avoir la classe statique en java. En java, nous avons statique des variables d'instance ainsi que des méthodes statiques et aussi statique bloc. Les Classes peuvent également être effectués statique en Java.
Java nous permet de définir une classe dans une autre. Une telle classe est appelée classe imbriquée. La classe qui clôturait une classe imbriquée est connu comme l'Extérieur de la classe. En java, on ne peut pas faire de classe de Haut niveau statique. Seulement les classes imbriquées peuvent être statiques.
Quelles sont les différences entre statiques et non statiques de classes imbriquées?
Suivantes sont les différences majeures entre le statique de la classe imbriquée et non statique de la classe imbriquée. Non statique de la classe imbriquée est aussi appelée Intérieur de la Classe.
1) Imbriquée statique de la classe n'a pas besoin de référence de l'Extérieur de la classe, mais Non statique de la classe imbriquée ou à l'Intérieur de la classe nécessite l'Extérieur de la classe de référence.
2) à l'Intérieur de la classe(ou de la non-statique de la classe imbriquée) peut accéder à la fois statiques et non statiques des membres de l'Extérieur de la classe. Une classe statique ne peut pas accéder aux non-membres statiques de l'Extérieur de la classe. Il peut accéder uniquement aux membres statiques de l'Extérieur de la classe.
3) Une instance de l'Intérieur de la classe ne peut pas être créé sans une instance de l'extérieur de la classe et un Intérieur de classe peut faire référence à des données et des méthodes définies à l'Extérieur de la classe dans laquelle il se niche, de sorte que nous n'avons pas besoin de passer la référence d'un objet dans le constructeur de l'Intérieur de la classe. Pour cette raison, les classes internes peuvent faire programme simple et concise.
/* Java program to demonstrate how to implement static and non-static
classes in a java program. */
class OuterClass{
private static String msg = "GeeksForGeeks";
// Static nested class
public static class NestedStaticClass{
// Only static members of Outer class is directly accessible in nested
// static class
public void printMessage() {
// Try making 'message' a non-static variable, there will be
// compiler error
System.out.println("Message from nested static class: " + msg);
}
}
// non-static nested class - also called Inner class
public class InnerClass{
// Both static and non-static members of Outer class are accessible in
// this Inner class
public void display(){
System.out.println("Message from non-static nested class: "+ msg);
}
}
}
class Main
{
// How to create instance of static and non static nested class?
public static void main(String args[]){
// create instance of nested Static class
OuterClass.NestedStaticClass printer = new OuterClass.NestedStaticClass();
// call non static method of nested static class
printer.printMessage();
// In order to create instance of Inner class we need an Outer class
// instance. Let us create Outer class instance for creating
// non-static nested class
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
// calling non-static method of Inner class
inner.display();
// we can also combine above steps in one step to create instance of
// Inner class
OuterClass.InnerClass innerObject = new OuterClass().new InnerClass();
// similarly we can now call Inner class method
innerObject.display();
}
}
Sortie:
Message de imbriquée statique de la classe: GeeksForGeeks
Message de non-statique de la classe imbriquée: GeeksForGeeks
Message de non-statique de la classe imbriquée: GeeksForGeeks
Livre De Référence:
Introduction À la Programmation Java par Y. DANIEL LIANG