Anonyme Java-Klasse

Was ist eine anonyme Klasse?

Eine Klasse, in der die Klassendefinition und -instanziierung in einem einzigen Ausdruck ohne Angabe des Klassennamens beschrieben werden. Sie können die Schnittstelle implementieren, die Methode abrufen, die Klasse erben, überschreiben und die Methode abrufen, ohne den Klassennamen anzugeben. Dies ist praktisch, wenn Sie die Methode nur vor Ort verwenden möchten.

interface Inter{
	void methodA();
}

class SuperT{
	void methodS() {
		System.out.println("Super");
	}
}

class OuterT{ //Äußere Klasse
	void method1() {
		new Inter() { //Implementieren und instanziieren Sie die Schnittstelle gleichzeitig
			public void methodA() {
				System.out.println("methodA Implementierung");
			}
		}.methodA(); //Rufen Sie methodA aus dem instanziierten auf
	}

	/*void method2() {
		new SuperT() {
			void methodS() {
				System.out.println("Override");
			}
		}.methodS();
	}*/

}

public class Tokumei {

	public static void main(String[] args) {
		OuterT ot = new OuterT();
		ot.method1();
		//ot.method2();
		
		System.out.println("-----Wird aufgerufen, nachdem eine Variable vom Typ SuperT zugewiesen wurde-----");
		SuperT st = new SuperT() { //Weisen Sie eine Variable vom Typ Superklasse zu
			void methodS() {
				System.out.println("Override");
			}
			void methodSub() { //Anonyme Methode der anonymen Unterklasse
				System.out.println("Sub");
			}
		};

		st.methodS();
		//st.methodSub(); //Sie können keine Methoden aufrufen, die nur für anonyme Unterklassen mit Variablen vom Typ Superklasse gelten
		
		System.out.println("-----Beim direkten Aufruf von einem Objekt-----");
		new SuperT() {
			void methodS() {
				System.out.println("Override");
			}
			void methodSub() {
				System.out.println("Sub");
			}
		}.methodSub(); //Kann direkt aufgerufen werden
		}
}

Ausgabeergebnis

methodA Implementierung
-----Wird aufgerufen, nachdem eine Variable vom Typ SuperT zugewiesen wurde-----
Override
-----Beim direkten Aufruf von einem Objekt-----
Sub

Punkt

(1) Beim Erben einer Klasse können anonyme Unterklassen die Methode überschreiben.

(2) Wenn eine anonyme Unterklasse, die eine Oberklasse erbt, einer Variablen vom Typ Oberklasse zugewiesen und dann aufgerufen wird, können nur die Methoden (einschließlich überschriebener) in der Oberklasse aufgerufen werden. (Der Mechanismus ist der gleiche wie für normale Ober- und Unterklassen, und der zugängliche Bereich ändert sich je nach Variablentyp.)

(3) Beim direkten Aufruf von einem Objekt kann auch die ursprünglich in der anonymen Unterklasse festgelegte Methode aufgerufen werden.

Recommended Posts

Anonyme Java-Klasse
Anonyme Klasse (anonyme Klasse)
Java-Klassenmethoden
[Java] Klassenvererbung
Java-Scanner-Klasse
Java HashMap-Klasse
Java (abstrakte Klasse)
[Java] Verschachtelte Klasse
Über die Java-Klasse
[Java] Abstrakte Klasse
[Java] Objektklasse
Lokale Java-Klasse
Über die Klassenteilung (Java)
Informationen zur Java StringBuilder-Klasse
[Java] Über Singleton Class
[Java] Über anonyme Klassen
Überprüfung der Java-Innenklasse
Feld für den Java-Klassentyp
Java-Programmierung (Klassenmethode)
Informationen zur Java String-Klasse
Java-Programmierung (Klassenstruktur)
Über die abstrakte Klasse von Java
Einfaches Beispiel für einen Rückruf im Beispiel einer anonymen Java Part2-Klasse
[Java] Integer-Wrapper-Klassenreferenz
Java-Memo-Teilzeichenfolge (Standardklasse)
Java unflexibler String-Klassen-Teilstring
[Implementierung] Java Prozessklassennotizen
Informationen zu Java Class Loader-Typen
Verwendung der Java-Klasse
[Java] Komparator der Collection-Klasse
Java
Java-Lernnotiz (abstrakte Klasse)
Zusammenfassung der Java Math Klasse
[Java] Was ist Klassenvererbung?
Java-Klasse Variable Klassenmethode
Java
[Java-Grundlagen] Was ist Klasse?
Implementieren Sie Thread in Java und versuchen Sie, die anonyme Klasse Lambda zu verwenden
Erstellen Sie mit JAVA eine unveränderliche Klasse
Warum werden Klassenvariablen benötigt? [Java]
Rufen Sie Kotlins versiegelte Klasse von Java aus an
Verschiedene Methoden der Java String Klasse
[Java] Memo zum Benennen von Klassennamen
So zerlegen Sie eine Java-Klassendatei
Kotlin-Klasse zum Senden an Java-Entwickler
StringBuffer- und StringBuilder-Klasse in Java
So dekompilieren Sie eine Java-Klassendatei
Java (Klassentyp für Feld verwenden)
Java-Quellcode zum Lesen der Klasse java.lang.Math
[Java] Button-Vorlagenklasse von Graphics
Verwendung von Klassenmethoden [Java]
[Java] Verwendung der Math-Klasse
Java lernen (0)
Java studieren ―― 3
[Java] -Array
Was ist eine Klasse in der Java-Sprache (3 /?)
Java geschützt
[Java] Anmerkung
Java-Array
Kotlins Klasse Teil 2 zum Senden an Java-Entwickler