Interne und abnormale Klassen der Java-Programmentwicklung und des Lernens

(Studienreferenzbuch: Java2-Tutorial, fünfte Ausgabe)

Eine interne Klasse

Java unterstützt die Definition einer Klasse in einer anderen Klasse. Eine solche Klasse wird als innere Klasse bezeichnet, und die in der inneren Klasse enthaltene Klasse wird als äußere Klasse der inneren Klasse bezeichnet. Die Beziehung zwischen innerer Klasse und äußerer eingebetteter Klasse ist wie folgt:

  • Die Mitgliedsvariablen der externen Klasse sind in der internen Klasse weiterhin gültig, und die Methoden der internen Klasse können auch die Methoden der externen Klasse aufrufen
  • Klassenvariablen und Klassenmethoden (statisch) können nicht im Hauptteil einer inneren Klasse deklariert werden. Die externe Klasse kann die interne Klasse verwenden, um das Objekt als Mitglied der externen Klasse zu deklarieren
  • Die innere Klasse wird nur von ihrer äußeren Klasse verwendet, andere Klassen können die innere Klasse einer bestimmten Klasse nicht zum Deklarieren von Objekten verwenden

Die vom Java-Compiler generierte Bytecode-Datei der internen Klasse unterscheidet sich von der üblichen Klasse (Klassenname.Klasse), aber der externe Klassenname $ Interner Klassenname.Klasse
hat und nur interne Klassen können als statische Klassen geändert werden Programm kann die statische innere Klasse verwenden, um Objekte in anderen Klassen zu erstellen. Statische interne Klassen können Instanzmitgliedsvariablen externer eingebetteter Klassen nicht manipulieren.

Zwei anonyme Klassen

Mit Java können Sie ein Unterklassenobjekt direkt mithilfe des Klassenkörpers einer Unterklasse einer Klasse erstellen. Dies bedeutet, dass es neben der Konstruktionsmethode der übergeordneten Klasse auch Klassenkörper gibt, die Unterklassenobjekte erstellen können. Dieser Klassenkörper wird als Unterklasse ohne Klassendeklarationen betrachtet und als anonyme Klasse bezeichnet. Eine anonyme Klasse ist eine Unterklasse . Da kein Name verfügbar ist, kann ein Objekt nicht mit einer anonymen Klasse deklariert werden, ein Objekt kann jedoch direkt erstellt werden. Im Folgenden wird ein Objekt mit einer anonymen Klasse erstellt:

new 父类名() {
    
    
	匿名类的类体
};

Das von der anonymen Klasse erstellte Objekt kann nur als oberes Transformationsobjekt als Methodenparameter verwendet werden, um den Code zu vereinfachen.

(1) Merkmale anonymer Klassen

  • Eine anonyme Klasse kann die Methoden der übergeordneten Klasse erben oder die Methoden der übergeordneten Klasse überschreiben.
  • Wenn eine anonyme Klasse verwendet wird, muss sie direkt zum Erstellen eines Objekts in einer bestimmten Klasse verwendet werden. Die anonyme Klasse muss also eine innere Klasse sein.
  • Anonyme Klassen können auf Mitgliedsvariablen und -methoden in externen Klassen zugreifen, und statische Mitgliedsvariablen und -methoden können nicht im Klassenkörper anonymer Klassen deklariert werden.
  • Da die anonyme Klasse eine Unterklasse ist, aber kein Klassenname vorhanden ist, sollten Sie beim Erstellen eines Objekts mit der anonymen Klasse direkt die Konstruktionsmethode der übergeordneten Klasse verwenden.

(2) Die Rolle anonymer Klassen Wenn
Benutzer Unterklassenparameter an die Methode übergeben möchten, können sie anonyme Klassenobjekte direkt in der Parameterliste der Methode erstellen.

(3) Anonyme Klassen in Bezug auf Schnittstellen
Java ermöglicht es auch, ein anonymes Objekt direkt mit dem Schnittstellennamen und einem Klassenkörper zu erstellen. Dieser Klassenkörper wird als Klassenkörper betrachtet, der die Schnittstelle ohne die Klassendeklaration implementiert. Der Klassenkörper muss alle Methoden in der Schnittstelle überschreiben. folgendermaßen:

new 接口名() {
    
    
	实现接口的匿名类的类体
};

Drei, abnormale Klasse

Java verwendet throw关键字Objekte, die eine Exception-Unterklasse auslösen, um anzuzeigen, dass eine Exception aufgetreten ist.

(1) Try-catch-Anweisung
Java verwendet die try-catch-Anweisung, um Ausnahmen zu behandeln, und platziert mögliche abnormale Operationen im try-Teil der try-catch-Anweisung. Sobald try ein Ausnahmeobjekt auslöst oder eine Methode aufruft, die möglicherweise ein Ausnahmeobjekt auslöst ( Und die Methode löst ein Ausnahmeobjekt aus), dann stoppt der try-Teil sofort die Ausführung (außerhalb des try-Blocks) und führt dann den catch-Teil aus. Ein Try-Catch kann aus mehreren Fängen bestehen.

try {
    
    
	可能发生异常的语句
}
catch(ExceptionSubClass1 e) {
    
    
	...
}
catch(ExceptionSubClass2 e) {
    
    
	...
}

(2) Benutzerdefinierte Ausnahmeklasse
Beim Schreiben eines Programms können Sie die Ausnahmeklasse (Systemausnahmeklasse) erweitern, um Ihre eigene Ausnahmeklasse zu definieren , und dann angeben, welche Methoden diese Ausnahmen gemäß den Anforderungen des Programms generieren sollen. Wenn eine Methode deklariert wird, können Sie throws关键字mehrere Ausnahmen verwenden, die von der Deklaration generiert werden sollen (Methodendeklaration löst einen benutzerdefinierten Ausnahmeklassennamen aus), und die Operation, die die Ausnahme generiert, im Methodenkörper der Methode angeben, dh ein Objekt mit erstellen die entsprechende Ausnahmeklasse. Verwenden Sie das Schlüsselwort throw, um das Ausnahmeobjekt auszulösen, wodurch die Methode die Ausführung beendet. Das Programm muss die Methode der möglichen Ausnahme im try-catch-Anweisungsblock aufrufen, wobei die Rolle des catch darin besteht, das vom Schlüsselwort throw ausgelöste Ausnahmeobjekt zu erfassen.

throw:用在方法体中表示抛出异常
throws:用在自定义异常方法声明时表示这个方法会抛出异常。

Viertens Behauptung

Assertion-Anweisungen sind in der Debugging-Phase des Codes sehr effektiv und werden im Allgemeinen für Fehler verwendet, auf die das Programm nicht vorbereitet ist, indem Ausnahmen abgefangen werden.

(1) Syntaxformat
Verwenden Sie das Schlüsselwort assert, um eine Assertionsanweisung zu deklarieren. Es gibt zwei Formate:

assert 返回值为boolean类型的表达式;

Wenn der Ausdruck true zurückgibt, wird das Programm weiter ausgeführt, andernfalls wird das Programm sofort gestoppt.

assert 返回值为boolean类型的表达式:执行表达式;

Wenn der boolesche Typausdruck true zurückgibt, wird das Programm weiter ausgeführt. Wenn der Rückgabewert falsch ist, stoppt das Programm die Ausführung von der Zusicherung und gibt den Wert des Ausführungsausdrucks aus.

(2) Aktivieren und Deaktivieren von Assert-Anweisungen

Wenn Sie den Java-Interpreter verwenden, um die Anwendung direkt auszuführen, ist die Assertion-Anweisung standardmäßig deaktiviert. Beim Debuggen des Programms können Sie -ea verwenden, um die Assertion-Anweisung zu aktivieren:java -ea mainClass

Ich denke du magst

Origin blog.csdn.net/YCF8746/article/details/112999025
Empfohlen
Rangfolge