Java tillader, at en klasse defineres i en anden klasse. Disse kaldes Indlejrede klasser . Klasser kan være statiske, hvilket de fleste udviklere er opmærksomme på, herefter kan nogle klasser gøres statiske i Java. Java understøtter Statiske instansvariabler , Statiske metoder , Statisk blok , og statiske klasser. Klassen, hvori den indlejrede klasse er defineret, er kendt som Ydre Klasse . I modsætning til klasser på øverste niveau, Indlejrede klasser kan være statiske . Ikke-statiske indlejrede klasser er også kendt som Indre klasser .
Bemærk: Klassen på øverste niveau kan ikke være statisk i java, for at skabe en statisk klasse skal vi oprette en indlejret klasse og derefter gøre den statisk.
En forekomst af en indre klasse kan ikke oprettes uden en forekomst af den ydre klasse. Derfor kan en indre klasseinstans få adgang til alle medlemmer af dens ydre klasse uden at bruge en reference til den ydre klasseinstans. Af denne grund kan indre klasser hjælpe med at gøre programmer enkle og kortfattede.
Husk: I statisk klasse kan vi nemt skabe objekter.
Forskelle mellem statiske og ikke-statiske indlejrede klasser
Følgende er store forskelle mellem statiske indlejrede klasser og indre klasser.
- En statisk indlejret klasse kan instansieres uden at instantiere dens ydre klasse.
- Indre klasser kan få adgang til både statiske og ikke-statiske medlemmer af den ydre klasse. En statisk klasse kan kun få adgang til de statiske medlemmer af den ydre klasse.
Eksempel af Statiske og ikke-statiske indlejrede klasser
Nedenfor er implementeringen af emnet nævnt 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();> > }> }> |
>
fuld form ide
>Produktion
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>