Java tillåter att en klass definieras inom en annan klass. Dessa kallas Kapslade klasser . Klasser kan vara statiska vilket de flesta utvecklare är medvetna om, hädanefter kan vissa klasser göras statiska i Java. Java stöder Statiska instansvariabler , Statiska metoder , Statiskt block , och statiska klasser. Klassen där den kapslade klassen är definierad är känd som Ytterklass . Till skillnad från klasser på högsta nivå, Kapslade klasser kan vara statiska . Icke-statiska kapslade klasser kallas också Inre klasser .
Notera: Toppnivåklassen kan inte vara statisk i java, för att skapa en statisk klass måste vi skapa en kapslad klass och sedan göra den statisk.
En instans av en inre klass kan inte skapas utan en instans av den yttre klassen. Därför kan en inre klassinstans komma åt alla medlemmarna i dess yttre klass, utan att använda en referens till den yttre klassinstansen. Av denna anledning kan inre klasser hjälpa till att göra programmen enkla och koncisa.
gjutsnöre som int
Kom ihåg: I statisk klass kan vi enkelt skapa objekt.
Skillnader mellan statiska och icke-statiska kapslade klasser
Följande är stora skillnader mellan statiska kapslade klasser och inre klasser.
- En statisk kapslad klass kan instansieras utan att instansiera dess yttre klass.
- Inre klasser kan komma åt både statiska och icke-statiska medlemmar av den yttre klassen. En statisk klass kan endast komma åt de statiska medlemmarna i den yttre klassen.
Exempel av Statiska och icke-statiska kapslade klasser
Nedan är implementeringen av ämnet som nämns ovan:
array sorterad i 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();> > }> }> |
>
mylivecricket alternativ
>Produktion
Message from nested static class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks Message from non-static nested class: GeeksForGeeks>