logo

Clasă statică în Java

Java permite definirea unei clase în cadrul unei alte clase. Acestea sunt numite Clase imbricate . Clasele pot fi statice, ceea ce majoritatea dezvoltatorilor sunt conștienți, de acum înainte unele clase pot fi făcute statice în Java. Java suportă Variabile de instanță statică , Metode statice , Bloc static , și clase statice. Clasa în care este definită clasa imbricată este cunoscută ca Clasa exterioară . Spre deosebire de clasele de nivel superior, Clasele imbricate pot fi statice . Clasele imbricate non-statice sunt cunoscute și ca Clasele interioare .

Notă: Clasa de nivel superior nu poate fi statică în java, pentru a crea o clasă statică trebuie să creăm o clasă imbricată și apoi să o facem statică.



O instanță a unei clase interioare nu poate fi creată fără o instanță a clasei exterioare. Prin urmare, o instanță de clasă interioară poate accesa toți membrii clasei sale exterioare, fără a utiliza o referință la instanța de clasă exterioară. Din acest motiv, clasele interne pot ajuta la realizarea programelor simple și concise.

Tine minte: În clasa statică, putem crea cu ușurință obiecte.

Diferențele dintre clasele imbricate statice și non-statice

Următoarele sunt diferențe majore între clasele imbricate statice și clasele interioare.



  1. O clasă imbricată statică poate fi instanțiată fără a instanția clasa sa exterioară.
  2. Clasele interioare pot accesa atât membrii statici, cât și nestatici ai clasei exterioare. O clasă statică poate accesa numai membrii statici ai clasei exterioare.

Exemplu de Clase imbricate statice și non-statice

Mai jos este implementarea subiectului menționat mai sus:

Java






// 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();> >}> }>

>

>

Ieșire

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