In diesem Artikel werden hauptsächlich die gängigen Java-Schlüsselwörter final, static, super analysiert und dies im Detail, um den Lesern die Referenz zu erleichtern. Die Einzelheiten lauten wie folgt:
1. Finale
1) Klasse ändern:
Zeigt an, dass diese Klasse nicht vererbt werden kann
2) Methode (Methode) ändern
Zeigt an, dass diese Methode nicht überschrieben werden kann (@override)
3) Variable (Variable) ändern
Zeigt an, dass der Wert dieser Variablen später nicht geändert werden kann. Sie wird häufig zum Ändern unveränderlicher Konstanten verwendet.
Hinweis: final bedeutet wörtlich „endgültig“ und „unveränderlich“. Es ist bequemer, sich die Bedeutung zu merken.
2. statisch (die zweite und dritte Methode werden häufig verwendet)
1) Klasse ändern:
(Nicht häufig verwendet) kann nur zum Ändern innerer Klassen verwendet werden. Gewöhnliche Klassen dürfen auf diese Weise nicht deklariert werden.
2) Methode (Methode) ändern
Statische Methoden gehören zur Klasse (von Objekten gemeinsam genutzt), nicht zu einem bestimmten Objekt. Es ist nicht erforderlich, ein Objekt zu erstellen. Sie können diese Methode mit dem Klassennamen aufrufen.
(Wenn das Programm ausgeführt wird, wird der Bytecode der Klasse in den Speicher geladen. Wenn die Klasse kein Objekt erstellt, wurde der Klassenvariablen Speicher zugewiesen, und der Instanzvariablen wird nur dann Speicherplatz zugewiesen, wenn ein bestimmtes Objekt erstellt wird. )
3) Variable (Variable) ändern
Ähnlich wie bei 2) werden Variablen auf Klassenebene gemeinsam genutzt und es besteht keine Notwendigkeit, Objekte zu erstellen. Die Änderung des Variablenwerts ist jedoch ganzzahlig. Das heißt, wenn Objekt A den Wert einer statischen Variablen durch eine Operation ändert darauf wird Objekt B die geänderte statische Variable bearbeiten.
Hinweis: Mit Static geänderte Codeblöcke werden als statische Codeblöcke bezeichnet, die zuerst ausgeführt werden, unabhängig davon, wo sie platziert werden, und dann werden die normalen Codeblöcke ausgeführt. Es kann mehrere statische Codeblöcke geben, die von der JVM in der Reihenfolge ihres Auftretens ausgeführt werden. Jeder Codeblock wird nur einmal ausgeführt.
Die Schlüsselwörter this und super können in statischen Methoden nicht vorkommen.
3. super: (bezogen auf den Verweis auf die übergeordnete Klasse)
1) Bezogen auf die Klasse (übergeordnete Klasse, auch Superklasse genannt):
Rufen Sie den Konstruktor der übergeordneten Klasse über super (Parameter 1, Parameter 2, ..., Parameter n) auf.
2) Bezogen auf Methode (Methode)
super.Method(Parameter 1, Parameter 2,..., Parameter n) ruft die überschriebene Methode der übergeordneten Klasse auf;
3) Bezogen auf Variable (Variable)
super.variable, rufen Sie die Variable der übergeordneten Klasse auf
Hinweis: super muss in der ersten Zeile des Unterklassenkonstruktors verwendet werden;
Wenn die übergeordnete Klasse keinen Konstruktor ohne Parameter hat, muss die Unterklasse super verwenden, um den Konstruktor der übergeordneten Klasse explizit aufzurufen.
4. this: (Referenz auf das aktuelle Objekt)
1) Klassenbezogen:
Dies (Parameter 1, Parameter 2, ..., Parameter n), dies ist ein gewöhnlicher Konstruktor. Nur der Konstruktor (andere) kann den Konstruktor (dies) aufrufen, und gewöhnliche Funktionen können den Konstruktor nicht aufrufen.
2) Methodenbezogen:
Rufen Sie eine Methode für das aktuelle Objekt auf
3) Variable (variable) bezogen auf:
Rufen Sie die Variable des aktuellen Objekts auf
Hinweis: Der explizite Aufruf von this(); und super(); kann nur in der ersten Zeile der Konstruktion platziert werden;
this.method..();super.method..(); kann überall platziert und als normale Methode verwendet werden;
Es gibt einen großen Unterschied zwischen Konstruktoren und Methoden, die das Schlüsselwort this verwenden. Die Methodenreferenz verweist auf die Instanz der Klasse, auf der die Methode ausgeführt wird. Statische Methoden können das Schlüsselwort this nicht verwenden, da statische Methoden nicht zu Instanzen der Klasse gehören und daher nichts darauf verweist. Das This des Konstruktors zeigt auf einen anderen Konstruktor in derselben Klasse mit einer anderen Parameterliste.