logo

Classe estàtica en Java

Java permet definir una classe dins d'una altra classe. Aquests s'anomenen Classes imbricades . Les classes poden ser estàtiques que la majoria dels desenvolupadors són conscients, d'ara endavant algunes classes es poden fer estàtiques a Java. Suporta Java Variables d'instància estàtica , Mètodes estàtics , Bloc estàtic , i Classes estàtiques. La classe en què es defineix la classe imbricada es coneix com a Classe exterior . A diferència de les classes de primer nivell, Les classes imbricades poden ser estàtiques . Les classes imbricades no estàtiques també es coneixen com Classes internes .

cadena.conté java

Nota: La classe de nivell superior no pot ser estàtica a Java, per crear una classe estàtica hem de crear una classe imbricada i després fer-la estàtica.



No es pot crear una instància d'una classe interna sense una instància de la classe externa. Per tant, una instància de classe interna pot accedir a tots els membres de la seva classe externa, sense utilitzar una referència a la instància de classe externa. Per aquest motiu, les classes internes poden ajudar a fer que els programes siguin senzills i concisos.

Recordeu: A la classe estàtica, podem crear objectes fàcilment.

Diferències entre classes imbricades estàtiques i no estàtiques

A continuació es mostren les principals diferències entre les classes imbricades estàtiques i les classes internes.



  1. Es pot crear una instancia d'una classe imbricada estàtica sense crear una instància de la seva classe externa.
  2. Les classes internes poden accedir tant als membres estàtics com als no estàtics de la classe externa. Una classe estàtica només pot accedir als membres estàtics de la classe externa.

Exemple de Classes imbricades estàtiques i no estàtiques

A continuació es mostra la implementació del tema esmentat anteriorment:

Java




imprimir des de java



python // operador

// Java program to Demonstrate How to> // Implement Static and Non-static Classes> // Class 1> // Helper class> class> OuterClass {> >// Input string> >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()> >{> >// Print statement whenever this method is> >// called> >System.out.println(> >'Message from non-static nested class: '> >+ msg);> >}> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating instance of nested Static class> >// inside main() method> >OuterClass.NestedStaticClass printer> >=>new> OuterClass.NestedStaticClass();> >// Calling non-static method of nested> >// static class> >printer.printMessage();> >// Note: In order to create instance of Inner class> >// we need an Outer class instance> >// Creating 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 calling inner class defined method> >innerObject.display();> >}> }>

>

np zeros
>

Sortida

Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>