Vorwort
Eine Schließung ist ein Callable -Objekt, das einige Informationen aus dem Bereich, in dem er erstellt wurde, aufgezeichnet wird. Durch diese Definition ist ersichtlich, dass die innere Klasse ein objektorientierter Verschluss ist, da sie nicht nur Informationen über das periphere Klassenobjekt (den Umfang des Erstellens der inneren Klasse) enthält, sondern automatisch auch einen Verweis auf das Objekt der peripheren Klassenklasse hat. In dieser Rolle hat die innere Klasse das Recht, alle Mitglieder, einschließlich privater Mitglieder, zu betreiben.
Eines der umstrittensten Probleme in Java ist, dass Java angenommen wird, dass Java einen Zeiger-ähnlichen Mechanismus enthalten sollte, um Rückrufe zu ermöglichen. Durch den Rückruf kann das Objekt einige Informationen tragen, mit denen es zu einem späteren Zeitpunkt das anfängliche Objekt aufrufen kann. Wenn der Rückruf über einen Zeiger implementiert wird, können Sie nur hoffen, dass der Programmierer den Zeiger nicht missbraucht.
1. interne Klasse von Mitgliedern
Eine innere Klasse kann als Mitglied angesehen werden. Die innere Klasse der Mitglieder kann unbedingt auf alle Mitgliedseigenschaften und Mitgliedermethoden externer Klassen zugreifen.
Klasse OutterClass {// externe Klasse private int in = 0; static inn inn = 4; public outterClass (int in) {this.in = in; } Klasse Innerclass {// Inner Class public void output () {System.out.println (in); System.out.println (Inn); }}}Wenn eine interne Mitgliedsklasse eine Mitgliedsvariable oder -methode mit demselben Namen wie eine externe Klasse besitzt, werden standardmäßig Mitglieder der internen Mitglieder der internen Klasse zugegriffen. Wenn Sie auf ein gleichnamiges Mitglied einer externen Klasse zugreifen möchten, müssen Sie in der folgenden Form darauf zugreifen:
OutterClass (externe Klasse) .This.Member
Wenn eine externe Klasse auf eine interne Klasse zugreift, müssen Sie zuerst ein Objekt der internen Klasse erstellen und dann über einen Verweis auf dieses Objekt darauf zugreifen.
Klasse OutterClass {private int in = 0; static inn inn = 4; public outterClass (int in) {Innerclass inner = new InnerClass (); this.in = innere.innum; } Klasse Innerclass {// innere Klasse public int innernum = 1; public void output () {System.out.println (in); System.out.println (Inn); int a = outterClass.this.inn; }}}Die internen Klassen von Mitgliedsklassen bestehen basierend auf externen Klassen, dh wenn Sie ein Objekt der internen Klasse erstellen möchten, muss die Prämisse ein Objekt der externen Klasse existieren. Die allgemeine Möglichkeit, ein internes Klassenobjekt zu erstellen, ist wie folgt:
öffentliche Klasse Klasse Klasse {public static void main () {outterClass oc = new OutterClass (3); OutterClass.InnerClass in = oc.new InnerClass (); }} 2. lokale interne Kategorien
Eine lokale innere Klasse ist wie eine lokale Variable in einer Methode und kann keine public , protected , private und static Modifikatoren haben.
Klasse outterClass {public outterClass (int in) {Klasse InnerClass {// Lokale innere Klasse int innernum = 1; }}} 3.. Verschachtelte interne Klassen
Verschachtelte innere Klassen sind interne Klassen, die als static modifiziert wurden. Eine innere Klasse, die als static deklariert wird, erfordert keine Verbindung zwischen dem inneren Klassenobjekt und dem äußeren Klassenobjekt, dh wir können uns direkt auf outer.inner beziehen.
Klasse outterClass {public outterClass (int in) {} statische Klasse Innerclass {// Lokale innere Klasse int innernum = 1; }} öffentliche Klasse Klasse {public static void main () {outterClass.innnerClass in = new OutterClass.innnerClass (); }} 4.. Anonyme interne Kategorie
Anonyme interne Klassen sind diejenigen, die wir am meisten verwenden, weil wir ihnen keine Namen geben möchten, also haben wir Anonymität. Anonyme interne Klassen müssen im Voraus definiert werden.
btnsan.setonclickListener (newonclickListener () {@Override publicVoidonClick (Ansicht v) {}}); 5. Schließungen und Rückrufe
Ein Verschluss ist ein Objekt, das aufgerufen werden kann, das Informationen über den Umfang spart, der es erstellt. Java kann nicht explizit Schließungen unterstützen, aber in Java können Schließungen durch "Interface + Inner Class" implementiert werden.
Zum Beispiel: Ein Schnittstellenprogrammierer und ein Basisklassenschreiber haben dieselbe work und denselben Methodennamen, aber seine Bedeutung ist völlig unterschiedlich. Zu diesem Zeitpunkt ist eine Schließung erforderlich.
Klasse Writer {// Writer Basisklasse void work () {};} Schnittstelle Programmierer {// Programmierer -Schnittstelle void work ();} Der Abschluss -Implementierungscode lautet wie folgt:
public class writerProgrammer erweitert writer {@Override public void work () {// writing} public void code () {// code schreiben} class ProgrammerInner implementiert Programmierer {@Override public void work () {code (); }}} In der Unterklasse wird eine interne Klasse definiert, die den Interface -Regeln des Programmierers folgt, und dann implementiert die interne Klasse die Methode des Programmierers work() -Methode code() und implementiert direkt work() -Methode des übergeordneten Klassenschreibers in der Unterklasse.
6. Die Rolle interner Kategorien
Interne Klassen können gut implementiert werden, um sich zu verbergen.
Im Allgemeinen erlauben nicht-internationale Klassen keine private und protected Berechtigungen, aber interne Klassen können es können
Die innere Klasse hat Zugriff auf alle Elemente der peripheren Klasse
Es wird jedoch ein multipler Vererbung erreicht
Es kann vermeiden, die Schnittstelle zu ändern und Anrufe von zwei gleichnamigen Methoden in derselben Klasse zu implementieren.
7. Zusammenfassung
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für alle helfen, Java zu lernen oder zu benutzen. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen.