Met Java kan een klasse binnen een andere klasse worden gedefinieerd. Deze worden genoemd Geneste klassen . Klassen kunnen statisch zijn, waarvan de meeste ontwikkelaars zich bewust zijn, en voortaan kunnen sommige klassen in Java statisch worden gemaakt. Java-ondersteuning Statische instantievariabelen , Statische methoden , Statisch blok en statische klassen. De klasse waarin de geneste klasse is gedefinieerd, staat bekend als de Buitenste klasse . In tegenstelling tot klassen op het hoogste niveau, Geneste klassen kunnen statisch zijn . Niet-statische geneste klassen worden ook wel Innerlijke klassen .
Opmerking: De klasse op het hoogste niveau kan in Java niet statisch zijn. Om een statische klasse te maken, moeten we een geneste klasse maken en deze vervolgens statisch maken.
Een instantie van een binnenste klasse kan niet worden gemaakt zonder een instantie van de buitenste klasse. Daarom heeft een instantie van de binnenste klasse toegang tot alle leden van zijn buitenste klasse, zonder een verwijzing naar de instantie van de buitenste klasse te gebruiken. Om deze reden kunnen innerlijke klassen helpen programma's eenvoudig en beknopt te maken.
binaire boom in volgorde traversal
Herinneren: In de statische klasse kunnen we eenvoudig objecten maken.
Verschillen tussen statische en niet-statische geneste klassen
Hieronder volgen de belangrijkste verschillen tussen statische geneste klassen en binnenklassen.
- Een statische geneste klasse kan worden geïnstantieerd zonder de buitenste klasse ervan te instantiëren.
- Binnenklassen hebben toegang tot zowel statische als niet-statische leden van de buitenklasse. Een statische klasse heeft alleen toegang tot de statische leden van de buitenste klasse.
Voorbeeld van Statische en niet-statische geneste klassen
Hieronder vindt u de implementatie van het hierboven genoemde onderwerp:
string.format java
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();> > }> }> |
>
jdbc jdbc
>Uitvoer
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>