logo

Statische Klasse in Java

Java ermöglicht die Definition einer Klasse innerhalb einer anderen Klasse. Diese nennt man Verschachtelte Klassen . Klassen können statisch sein, was den meisten Entwicklern bewusst ist. Von nun an können einige Klassen in Java statisch gemacht werden. Java unterstützt Statische Instanzvariablen , Statische Methoden , Statischer Block und statische Klassen. Die Klasse, in der die verschachtelte Klasse definiert ist, wird als bezeichnet Äußere Klasse . Im Gegensatz zu Spitzenklassen Verschachtelte Klassen können statisch sein . Nicht statische verschachtelte Klassen werden auch als „verschachtelte Klassen“ bezeichnet Innere Klassen .

Notiz: Die Top-Level-Klasse kann in Java nicht statisch sein. Um eine statische Klasse zu erstellen, müssen wir eine verschachtelte Klasse erstellen und sie dann statisch machen.



Eine Instanz einer inneren Klasse kann nicht ohne eine Instanz der äußeren Klasse erstellt werden. Daher kann eine Instanz einer inneren Klasse auf alle Mitglieder ihrer äußeren Klasse zugreifen, ohne einen Verweis auf die Instanz der äußeren Klasse zu verwenden. Aus diesem Grund können innere Klassen dazu beitragen, Programme einfach und prägnant zu gestalten.

Erinnern: In der statischen Klasse können wir problemlos Objekte erstellen.

Unterschiede zwischen statischen und nicht statischen verschachtelten Klassen

Im Folgenden sind die Hauptunterschiede zwischen statischen verschachtelten Klassen und inneren Klassen aufgeführt.



  1. Eine statisch verschachtelte Klasse kann instanziiert werden, ohne dass ihre äußere Klasse instanziiert wird.
  2. Innere Klassen können sowohl auf statische als auch nicht statische Mitglieder der äußeren Klasse zugreifen. Eine statische Klasse kann nur auf die statischen Mitglieder der äußeren Klasse zugreifen.

Beispiel von Statische und nicht statische verschachtelte Klassen

Nachfolgend finden Sie die Umsetzung des oben genannten Themas:

Teilableitungssymbollatex

Java






Nur Nick

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

>

>

Ausgabe

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