Überblick
Kürzlich lernte Python und stellte fest, dass Python mehr Erbschaft unterstützt, was mich an diesen von der internen Klasse implementierten Mechanismus erinnert. In diesem Artikel geht es nicht darum, wie die Vererbung durch die interne Klasse mehr Vererbung erzielt wird, sondern um die Typen und Verwendungsmethoden der internen Klasse zusammenzufassen.
Die interne Klasse der Java ist unterteilt in:
Die interne Klasse wird im Android -Quellcode in großen Mengen verwendet.
Stellen Sie diese internen Klassen als nächstes ein.
Nichtstatische interne Klasse
Wenn eine Klasse ein nicht -statisches Mitglied einer anderen Klasse ist, ist diese Klasse eine nicht -statische interne Klasse.
Der Beispielcode zum Erstellen einer nicht -statischen internen Klasse lautet wie folgt:
Klasse Outclass {Klasse Innerclass {}}
Als wir Javac zusammenstellten, stellten wir fest, dass zwei. Class -Dateien generiert wurden: Outclass.Class und Outclass $ InnerClass.Class.Class. Wie in der Abbildung unten gezeigt:
Interne Klassen aus der nicht -statischen Methode der externen Klasse
Es ist einfach, in der externen Klasse auf die interne Klasse zuzugreifen. Der Beispielcode lautet wie folgt:
Öffentliche Klasse (private statische int a = 0; .MakeInner ();} Klasse Innerclass {public void Seeouter () {System.out.println (a);Die Ergebnisse sind wie folgt:
0
Interne Klassen aus der statischen Methode der externen Klasse
Es ist relativ einfach, in der externen Klasse auf die interne Klasse zuzugreifen.
Outclass.InnerClass Innerclass = New Outclass ().
Mit anderen Worten, die nicht -statische interne Klasse muss zuerst instanziiert werden, und dann werden instanziierte interne Klassen über die externen Klassenobjekte verwendet. Der Beispielcode lautet wie folgt:
Öffentliche Klasse (private statische int a = 0; .NerClass Innerclass = New Outclass ().
Run Ergebnisse:
01
Diese Referenz in der internen Klasse
Gewöhnliche Klassen können auf die aktuellen Objekte sowie interne Klassen verweisen. Aber was ist, wenn die interne Klasse das aktuelle Objekt der externen Klasse zitieren möchte? Sie können die folgenden Möglichkeiten nutzen:
Externer Name. This
Der Beispielcode lautet wie folgt:
Öffentliche Klasse (private statische int a = 0; .NerClass Innerclass = New Outclass (). }}}
Statische interne Klasse
Die nicht statische interne Klasse wird oben eingeführt.
Die statische interne Klasse ist die Rolle eines statischen Mitglieds in der externen Klasse.
Beachten Sie, dass die externe Klasse nicht mit dem statischen Modifikator geändert werden kann.
Der Beispielcode lautet wie folgt:
Klasse Outclass {statische Klasse Innerclass {}}
Kompilieren Sie mit dem Befehl javac, Sie können sehen, dass es zwei. Class -Dateien gibt, wie in der folgenden Abbildung gezeigt:
Interne Klassen statischer interner Klassen aus der nicht -statischen Methode der externen Klasse
Der Besuch statischer interner Klassen aus externen Klassen entspricht nicht -statische interne Klassen in externen Kategorien. Es ist jedoch zu beachten, dass die statische interne Klasse zu diesem Zeitpunkt nur auf die statischen Mitglieder der externen Klasse zugreifen kann, und auf die nicht statischen Mitglieder können nicht zugegriffen werden.
Der Beispielcode lautet wie folgt:
Öffentliche Klassenklasse {private statische int a = 0; Outclass OClASS = NEW OUTCLASS (); println (b);}}}
Die Ausführungsergebnisse sind wie folgt:
Übertreffen Sie $ Innerclass@79A3400
Interne Klassifizierung statischer interner Klassen aus der externen statischen Methode
Beachten:
Da die statische interne Klasse ein statisches Mitglied der externen Klasse ist und die statischen Mitglieder an die Klasse gebunden sind, nicht an das Objekt instanziierter Objekte. Daher müssen interne Klassen in der statischen Methode der externen Klasse zuerst die externe Klasse nicht instanziieren.
Der Beispielcode lautet wie folgt:
Öffentliche Klassenklasse {private statische int a = 0; Outclass OClass = New Outclass (); this); system.out.println (a);
Anonyme interne Klasse
Die anonyme interne Klasse überflutet die Entwicklung von Android -Anwendungen.
Die anonyme interne Klasse kann wissen, dass es sich um eine interne Klasse handelt, die keine Kategorie hat, die normalerweise zur Vereinfachung des Codes verwendet wird.
Ich glaube, dass Schüler, die Java schreiben, die Threads verwenden. Der Beispielcode lautet wie folgt:
Public Class Outclass {public void testanonymousClass () {Thread t = neuer Thread (neuer Runnable () {@Override public void run () {für (int i = 0; i <10; i ++) {System.out.println (i); .
Die Ausführungsergebnisse sind wie folgt:
Ein weiterer Thread läuft ...