Unter normalen Umständen können statische Modifikationsklassen nicht verwendet werden. Wenn Sie statisch verwenden müssen, um die Klasse zu ändern, ändert Static normalerweise die anonyme interne Klasse.
Erstellen Sie eine andere Klasse in einer Klasse, die als Mitglied der inneren Klasse bezeichnet wird. Diese interne Mitgliedsklasse kann statisch sein (unter Verwendung der statischen Schlüsselwortänderung) oder nicht statisch. Weil statische interne Klassen bei der Definition und Verwendung verschiedener Einschränkungen aufweisen. In der tatsächlichen Arbeit wird also nicht viel verwendet.
Während des Entwicklungsprozesses werden die häufigsten internen Klassen in internen Klassen verwendet, bei denen es sich nicht um Mitglieder handelt. In bestimmten Fällen können statische innere Klassen jedoch auch ihre einzigartige Rolle spielen.
1. Zweck der Verwendung statischer interner Klassen.
Wenn Sie eine innere Klasse definieren, können Sie sie mit einem Berechtigungsmodifikator statisch vorfixieren. Zu diesem Zeitpunkt wird diese innere Klasse zu einer statischen inneren Klasse. Aus verschiedenen Gründen wie Verwendungsbeschränkungen und anderen Faktoren (die spezifischen Verwendungsbeschränkungen werden im folgenden Inhalt ausführlich erläutert) werden in der tatsächlichen Arbeit nicht viele verwendet. Aber es bedeutet nicht, dass es keinen Wert hat. In einigen besonderen Fällen ist es wirklich nicht möglich, dieser statischen inneren Klasse zu fehlen. Wenn beispielsweise bei der Durchführung von Codeprogramm -Tests eine Hauptmethode in jeder Java -Quelldatei festgelegt wird (die Hauptmethode ist der Eingang zu einer bestimmten Anwendung und muss sie haben), wird viel zusätzlicher Code angezeigt. Das Wichtigste ist, dass der Code dieses Hauptprogramms nur ein Formular für Java -Dateien ist und diese Hauptmethode selbst nicht erfordert. Aber es ist absolut unmöglich, ohne diese Hauptmethode zu verzichten. In diesem Fall kann die Hauptmethode in die statische innere Klasse geschrieben werden, sodass für jede Java -Quelldatei keine ähnliche Hauptmethode festgelegt werden muss. Dies ist sehr nützlich für Codetests. Bei einer mittleren und großen Anwendungsentwicklung ist es ein häufig verwendetes technisches Mittel. Obwohl diese statische interne Klasse nicht sehr häufig verwendet wird, müssen Programmentwickler sie ebenfalls beherrschen. Vielleicht kann es in einem kritischen Moment immer noch eine große Rolle spielen.
public class maininstaticClass {statische Klasse Haupthaupt {statische void main () {// Schreiben Sie die Hauptmethode in eine statische innere Klasse, so print () {system.out.println ("Haupt in der statischen inneren Klasse");}} öffentliche Klasse testmain {public static void main (String [] args) {// Todo automatisch generierte Methode Stub // new MaininstaticClass (). print ();2. Einschränkungen bei der Verwendung statischer interner Klassen.
Das Definieren einer inneren Klasse als statische Klasse ist im Grunde genommen das gleiche wie das Definieren anderer Klassen als statische Klassen, und die Referenzregeln sind im Grunde genommen gleich. Die Details sind jedoch immer noch sehr unterschiedlich. Insbesondere gibt es hauptsächlich die folgenden Bereiche, die die Aufmerksamkeit aller Programmeentwickler auf sich ziehen.
Eine davon ist die Definition statischer Mitglieder (einschließlich statischer Variablen und statischer Mitglieder). Wenn eine innere Klasse nicht als statische innere Klasse definiert ist, kann sie im Allgemeinen nicht als statische Mitgliedsvariable und eine statische Mitgliedsmethode definiert werden, wenn die Mitgliedsvariablen oder Mitgliedsmethoden definiert werden. Das heißt, statische Mitglieder können nicht in nicht statischen inneren Klassen deklariert werden. Zum Beispiel wird ein internes Klassenalter jetzt in einer Schülerklasse definiert. Wenn diese Klasse nicht mit dem statischen Schlüsselwort geändert wird, dh sie ist nicht als statische Klasse definiert, dürfte in dieser internen Klasse keine bestimmte Mitgliedermethode oder Mitgliedsvariable ändern. Es kann beim Kompilieren nicht passieren. Programmeentwickler müssen daher feststellen, dass in dieser Klasse nur durch Ändern einer inneren Klasse als statische Klasse statische Mitgliedsvariablen und Mitgliedsmethoden definiert werden können. Dies ist ein Merkmal, das statische innere Klassen haben. Genau aus diesem Grund können manchmal ohne diese statische interne Klasse viele Aufgaben nicht erledigt werden. Oder es ist notwendig, einen großen Kreis umzugehen, um die Bedürfnisse eines bestimmten Benutzers zu erreichen. Dies ist auch ein wichtiger Grund, warum statische Interna existieren.
Zweitens gibt es relativ große Beschränkungen für Mitgliedszitate. Allgemeine nicht statische Innenklassen können nach Belieben in externen Klassen auf Mitgliedervariablen und Mitgliedermethoden zugreifen. Selbst wenn diese Mitgliedermethoden als privat (private Mitgliedsvariablen oder -Methoden) geändert werden, können nach Belieben auf ihre nicht statischen Innenklassen zugegriffen werden. Es ist ein Privileg für nicht statische Innenklassen. Weil in anderen Klassen die als privaten definierten Mitgliedsvariablen oder Methoden unzugänglich sind. Wenn jedoch eine innere Klasse als statisch definiert ist, wird es bei der Verwendung von Mitgliedsmethoden oder Mitgliedsvariablen der äußeren Klasse viele Einschränkungen geben. Beispielsweise können nicht statische Mitglieder externer Klassen (einschließlich Mitgliedervariablen und Mitgliedermethoden) aus Objekten der statischen inneren Klasse zugegriffen werden. Was bedeutet das? Wenn in der externen Klasse zwei Variablen definiert sind, ist eine nicht statische Variable und die andere eine statische Variable. In einer statischen inneren Klasse, ob innerhalb einer Mitgliedsmethode oder an anderer Stelle, kann es nur auf statische Variablen in der äußeren Klasse verweisen und nicht auf nicht statische Variablen zugreifen. In statischen inneren Klassen können statische Methoden definiert werden (und nur statische Methoden in statischen inneren Klassen definiert werden) und Mitglieder der externen Klasse können in statischen Methoden referenziert werden. Unabhängig davon, wohin die innere Klasse verwiesen wird, gibt es eines gemeinsam, dh nur auf statische Mitgliedsmethoden oder Mitgliedsvariablen in der äußeren Klasse. Bei nicht statischen Mitgliedsvariablen und Mitgliedsmethoden sind sie in statischen inneren Klassen unzugänglich. Dies ist die maximale Nutzungsgrenze für statische innere Klassen. Es gibt keine solche Einschränkung in gewöhnlichen nicht statischen Innenklassen. Genau aus diesem Grund werden statische interne Klassen nur in bestimmten Gelegenheiten verwendet. Der Anwendungsbereich ist weitaus weniger umfangreich als der von nicht statischen internen Klassen.
Drittens müssen beim Erstellen einer statischen inneren Klasse keine Instanzen der statischen inneren Klasse an Fälle der externen Klasse binden.
Im Allgemeinen gibt es bei der Erstellung einer internen Mitgliederklasse in einer Klasse eine obligatorische Bestimmung, dh Fälle der inneren Klasse müssen an Fälle der äußeren Klasse gebunden sein. Das heißt, bevor Sie eine innere Klasse erstellen, müssen Sie zunächst das neue Schlüsselwort in der äußeren Klasse verwenden, um ein Objekt dieser inneren Klasse zu erstellen. In diesem Fall wird das Objekt der inneren Klasse an das Objekt der äußeren Klasse gebunden, wenn ein inneres Klassenobjekt aus der externen Klasse initialisiert wird. Mit anderen Worten, Objekte gewöhnlicher nicht statischer innerer Klassen sind an externe Objekte angeschlossen. Wenn die Mitgliedsentwickler jedoch statische innere Klassen erstellen, ist das eine andere Angelegenheit. Wenn ein Programmierer eine statische innere Klasse definiert, muss er im Allgemeinen keine Instanzen der externen Klasse definieren. Das heißt, um eine statische innere Klasse in einer externen Klasse zu definieren, müssen das Schlüsselwort neu verwendet werden, um eine Instanz der inneren Klasse zu erstellen. Das heißt, beim Erstellen eines internen Objekts einer statischen Klasse werden Objekte seiner externen Klasse nicht benötigt.
newMainInStaticClass.Main();
Aus dem spezifischen Grund müssen Programmeentwickler im Allgemeinen nicht so tief verstehen, dass sie sich nur daran erinnern müssen, dass es diese Regel gibt. Machen Sie beim Definieren statischer interner Klassen niemals den Fehler, zusätzliches Geld hinzuzufügen.
Aus der obigen Analyse können wir sehen, dass statische innere Klassen sich immer noch sehr von nicht statischen inneren Klassen unterscheiden. Im Allgemeinen können Programmentwickler verstehen, dass nicht statische innere Klasse Objekte implizit eine Referenz in der äußeren Klasse speichern, um auf das äußere Klassenobjekt zu verweisen, das sie erstellt hat. Unabhängig von diesem Verständnis müssen Programmeentwickler die Unterschiede zwischen statischen inneren Klassen und nicht statischen inneren Klassen berücksichtigen. Zum Beispiel, ob statische Mitgliedermethoden und Mitgliedsvariablen erstellt werden können (statische innere Klassen können statische Mitglieder anstelle von statischen inneren Klassen erstellen können), können Einschränkungen beim Zugriff auf Mitglieder von externen Klassen (statische innere Klassen können nur auf statische Mitgliedervariablen zugreifen und die Mitglieder-Mitglieds-Mits-Methoden zugreifen, die auf statische oder nicht statische Klassen und Mitgliedsklassen zugreifen können. Diese beiden Unterschiede sind der größte Unterschied zwischen statischen inneren Klassen und nicht statischen äußeren Klassen und auch der Grund, warum statische innere Klassen existieren. Nach dem Verständnis dieses Unterschieds müssen Programmentwickler auch unter den Umständen wissen, unter welchen Umständen sie statische innere Klassen verwenden sollten. Während bei den Programmtests kann beispielsweise die Hauptmethode in eine statische interne Klasse geschrieben werden, um den geschriebenen Code zu reduzieren und den Code prägnanter zu gestalten, um das Schreiben des Hauptmethodencodes in jeder Java -Quelldatei zu vermeiden.
Kurz gesagt, statische innere Klassen sind eine ganz besondere Klasse in der Java-Sprache, die sich stark von gewöhnlichen statischen Klassen und nicht statischen inneren Klassen unterscheidet. Als Programmentwickler ist es notwendig, die Unterschiede zwischen ihnen zu kennen und die richtigen Klassen zu übernehmen, in denen sie sich in realer Arbeit befinden. Im Allgemeinen ist die Häufigkeit statischer interner Klassen jedoch nicht sehr hoch. Wenn diese interne statische Klasse jedoch nicht verfügbar ist, kann sie sich jedoch negativ von der Hälfte des Ergebniss mit doppelt so großer Bedeutung auswirken.
3. Instantiation
Nachdem ich den obigen Inhalt gelesen hatte, habe ich ihn als Ganzes getestet:
Erstens muss jeder verstehen, dass statische innere Klassen einfach nicht von externen Klassen abhängig sind und die Variablen und Methoden in ihnen nicht unbedingt statisch sind. Sprechen wir über den folgenden Code:
public class test {public static void main (String [] args) {myInnerstaticClass inner = new myInnerstaticClass (); inner.a = 10; inner.b = "abc"; System.out.println (inner.a+"+inner.b); public class test {public static void main (String [] args) {myInnerstaticClass inner = new myInnerstaticClass (); inner.a = 10; inner.b = "abc"; System.out.println (inner.a+"+inner.b);Der obige Code instanziiert die statische anonyme Klasse mit neu, geben Sie nach dem Laufen 10 ABC ein, korrekt!
Zusammenfassen
Das obige ist die detaillierte Erklärung der statischen Klasse in Java in diesem Artikel. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!