Java lar en klasse defineres innenfor en annen klasse. Disse kalles Nestede klasser . Klasser kan være statiske som de fleste utviklere er klar over, heretter kan noen klasser gjøres statiske i Java. Java støtter Statiske forekomstvariabler , Statiske metoder , Statisk blokk , og statiske klasser. Klassen der den nestede klassen er definert er kjent som Ytre klasse . I motsetning til klasser på toppnivå, Nestede klasser kan være statiske . Ikke-statiske nestede klasser er også kjent som Indre klasser .
Merk: Toppnivåklassen kan ikke være statisk i java, for å lage en statisk klasse må vi lage en nestet klasse og deretter gjøre den statisk.
En forekomst av en indre klasse kan ikke opprettes uten en forekomst av den ytre klassen. Derfor kan en indre klasseforekomst få tilgang til alle medlemmene av dens ytre klasse, uten å bruke en referanse til den ytre klasseforekomsten. Av denne grunn kan indre klasser bidra til å gjøre programmene enkle og konsise.
Huske: I statisk klasse kan vi enkelt lage objekter.
Forskjeller mellom statiske og ikke-statiske nestede klasser
Følgende er store forskjeller mellom statiske nestede klasser og indre klasser.
- En statisk nestet klasse kan instansieres uten å instansiere dens ytre klasse.
- Indre klasser kan få tilgang til både statiske og ikke-statiske medlemmer av den ytre klassen. En statisk klasse kan bare få tilgang til de statiske medlemmene av den ytre klassen.
Eksempel av Statiske og ikke-statiske nestede klasser
Nedenfor er implementeringen av emnet nevnt ovenfor:
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();> > }> }> |
>
full form
>Produksjon
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>