Die Java -Sprache bietet viele Modifikatoren, die hauptsächlich in die folgenden zwei Kategorien unterteilt sind:
Modifikatoren werden verwendet, um Klassen, Methoden oder Variablen zu definieren, und werden normalerweise am vorderen Ende einer Anweisung platziert. Verwenden wir die folgenden Beispiele, um zu veranschaulichen:
öffentliche Klasseklassenklassenname {// ...} private boolean myflag; statische endgültige doppelte Wochen = 9,5; geschützte statische endgültige intboxwidth = 42; public static void main (String [] Argumente) {// Methode Body}}Zugriffskontrollmodifikator
In Java können Zugriffskontrollen verwendet werden, um den Zugriff auf Klassen, Variablen, Methoden und Konstruktoren zu schützen. Java unterstützt 4 verschiedene Zugriffsberechtigungen.
Der Standard, auch als Standard bezeichnet, ist im selben Paket sichtbar, ohne Modifikatoren zu verwenden.
Privat, mit dem privaten Modifikator angegeben, in derselben Klasse sichtbar.
Häufig, angegeben durch den öffentlichen Modifikator, sichtbar für alle Klassen.
Geschützt, mit dem geschützten Modifikator angegeben, für Klassen sichtbar und alle Unterklassen innerhalb desselben Pakets.
Standardzugriffsmodifikator - Es werden keine Schlüsselwörter verwendet
Variablen und Methoden, die standardmäßig zugreifen, sind für Klassen innerhalb desselben Pakets sichtbar. Alle Variablen in der Schnittstelle werden implizit als öffentliches statisches Finale deklariert, während die Methoden in der Schnittstelle standardmäßig öffentlich sind.
Beispiel:
Wie im folgenden Beispiel gezeigt, kann die Deklaration von Variablen und Methoden ohne Modifikatoren erfolgen.
String Version = "1.5.1"; Boolean ProcessOrder () {return true;}Privater Zugangsmodifikator - privat
Private Zugriffsmodifikatoren sind die strengste Zugangsstufe, sodass Methoden, Variablen und Konstruktoren, die als privat erklärt werden, nur von der Klasse zugegriffen werden können, zu der sie gehören, und Klassen und Schnittstellen können nicht als privat erklärt werden.
Variablen, die als privater Zugriffstyp deklariert sind, können nur durch externe Klassen über öffentliche Getter -Methoden in der Klasse zugegriffen werden.
Die Verwendung des privaten Zugriffsmodifikators wird hauptsächlich verwendet, um die Implementierungsdetails der Klasse zu verbergen und die Daten der Klasse zu schützen.
Die folgende Klasse verwendet einen privaten Zugriffsmodifikator:
public class logger {private String -Format; public String getFormat () {return this.format; } public void setFormat (String -Format) {this.format = format; }}Im Beispiel ist die Formatvariable in der Logger -Klasse eine private Variable, sodass andere Klassen den Wert der Variablen nicht direkt erhalten und festlegen können. Damit andere Klassen die Variable manipulieren können, werden zwei öffentliche Methoden definiert: getFormat () (gibt den Wert des Formats zurück) und SetFormat (String) (festgelegt den Wert des Formats)
Öffentlicher Zugangsmodifikator - öffentlich
Klassen, Methoden, Konstruktoren und Schnittstellen, die als öffentlich deklariert werden, können von jeder anderen Klasse zugegriffen werden.
Wenn mehrere öffentliche Klassen, die auf einander zugreifen, in verschiedenen Paketen verteilt sind, müssen Sie das Paket importieren, in dem sich die entsprechende öffentliche Klasse befindet. Aufgrund der Vererbung der Klasse können alle öffentlichen Methoden und Variablen der Klasse durch ihre Unterklassen vererbt werden.
Die folgenden Funktionen verwenden die öffentliche Zugriffskontrolle:
public static void main (String [] Argumente) {// ...}Die main () -Methode eines Java -Programms muss an öffentlich eingestellt sein, da ansonsten der Java -Interpreter die Klasse nicht ausführen kann.
Geschützter Zugriffsmodifikator - geschützt
Variablen, Methoden und Konstruktoren, die als geschützt deklariert sind, können von jeder anderen Klasse im selben Paket oder von Unterklassen in verschiedenen Paketen zugegriffen werden.
Der geschützte Zugriffsmodifikator kann Klassen und Schnittstellen nicht ändern. Methoden und Mitgliedsvariablen können als geschützt deklariert werden, die Mitgliedsvariablen und Mitgliedermethoden der Schnittstelle können jedoch nicht als geschützt deklariert werden.
Unterklassen können auf Methoden und Variablen zugreifen, die vom geschützten Modifikator deklariert werden, damit sie nicht verwandte Klassen vor der Verwendung dieser Methoden und Variablen schützen können.
Die folgende übergeordnete Klasse verwendet den geschützten Zugriffsmodifikator, und die Unterklasse überlädt die Openspeaker () -Methode der übergeordneten Klasse.
Klasse audioplayer {Protected Boolean Openspeaker (Sprecher sp) {// Implementierungsdetails}} Klasse StreamingAudioplayer {boolean openSpeaker (Sprecher sp) {// Implementierungsdetails}}Wenn die OpenSpeaker () -Methode als privat deklariert wird, können andere Klassen als Audioplayer nicht auf die Methode zugreifen. Wenn Openspeaker () öffentlich erklärt wird, können alle Klassen auf die Methode zugreifen. Wenn wir möchten, dass die Methode nur für eine Unterklasse der Klasse sichtbar ist, in der sie sich befindet, deklarieren Sie die Methode als geschützt.
Zugangskontrolle und Vererbung
Bitte beachten Sie die folgenden Erbschaftsregeln:
Non-Access-Modifikator
Um einige andere Funktionen zu implementieren, bietet Java auch viele Nicht-Zugriffs-Modifikatoren.
Der statische Modifikator wird verwendet, um Klassenmethoden und Klassenvariablen zu erstellen.
Der endgültige Modifikator wird verwendet, um Klassen, Methoden und Variablen zu ändern. Die durch die endgültige Klasse modifizierte Klasse kann nicht vererbt werden, die geänderte Methode kann nicht durch die ererbte Klasse neu definiert werden, und die modifizierte Variable ist eine Konstante und kann nicht geändert werden.
Abstrakter Modifikator, der zum Erstellen abstrakter Klassen und abstrakter Methoden verwendet wird.
Synchronisierte und volatile Modifikatoren werden hauptsächlich für die Gewindeprogrammierung verwendet.
Statischer Modifikator
Das statische Schlüsselwort wird verwendet, um statische Variablen unabhängig von Objekten zu deklarieren. Unabhängig davon, wie viele Objekte eine Klasse instanziiert, hat es nur eine Kopie seiner statischen Variablen. Statische Variablen werden auch als Klassenvariablen bezeichnet. Lokale Variablen können als statische Variablen deklariert werden.
Das statische Schlüsselwort wird verwendet, um statische Methoden unabhängig von Objekten zu deklarieren. Statische Methoden können nicht statische Variablen der Klasse verwenden. Die statische Methode erhält die Daten aus der Parameterliste und berechnet dann die Daten.
Der Zugriff auf Klassenvariablen und -Methoden kann direkt mit ClassName.variBablename und ClassName.MethodName zugegriffen werden.
Wie im folgenden Beispiel gezeigt, wird der statische Modifikator verwendet, um Klassenmethoden und Klassenvariablen zu erstellen.
öffentliche Klasse InstanceCounter {private static int numinStances = 0; geschützte statische int getcount () {return numinstances; } private statische void addInstance () {numinStances ++; } InstanceCounter () {InstanceCounter.addinStance (); } public static void main (String [] Argumente) {System.out.println ("Beginn mit" + InstanceCounter.getCount () + "Instanzen"); für (int i = 0; i <500; ++ i) {new InstanceCounter (); } System.out.println ("erstellt" + instanCecounter.getCount () + "Instanzen"); }}Die obigen Beispiele werden wie folgt ausgeführt und bearbeitet:
Begonnen mit 0 Instanzen
500 Instanzen erstellt
Endmodifikator
Letzte Variablen:
Endgültige Variablen können explizit initialisiert und nur einmal initialisiert werden. Verweise auf Objekte, die als endgültig deklariert sind, können nicht auf verschiedene Objekte hinweisen. Die Daten im endgültigen Objekt können jedoch geändert werden. Mit anderen Worten, der Verweis auf das endgültige Objekt kann nicht geändert werden, aber der Wert im Inneren kann geändert werden.
Endgültige Modifikatoren werden normalerweise zusammen mit statischen Modifikatoren verwendet, um Klassenkonstanten zu erstellen.
Beispiel:
public class test {endgültig int value = 10; // unten ist ein Beispiel, das eine konstante öffentliche statische endgültige Int -Boxwidth = 6 erklärt; statische endgültige String -Titel = "Manager"; public void ChangeValue () {value = 12; // Ein Fehler wird ausgegeben}}Letzte Methode
Die endgültige Methode in der Klasse kann von der Unterklasse vererbt werden, kann jedoch nicht von der Unterklasse geändert werden.
Der Hauptzweck einer endgültigen Methode besteht darin, zu verhindern, dass der Inhalt der Methode geändert wird.
Deklarieren Sie wie unten die Methode mit dem endgültigen Modifikator.
public class test {public Final void ChangEname () {// Methode Body}}Letzte Klasse
Die endgültigen Klassen können nicht vererbt werden, und keine Klasse kann alle Merkmale der endgültigen Klassen erben.
Beispiel:
public Final Class Test {// Klasse Body}Zusammenfassung Modifikator
Zusammenfassung Klasse:
Abstrakte Klassen können nicht verwendet werden, um Objekte zu instanziieren. Der einzige Zweck, abstrakte Klassen zu deklarieren, besteht darin, die Klasse in Zukunft zu erweitern.
Eine Klasse kann nicht gleichzeitig durch abstrakt und endgültig geändert werden. Wenn eine Klasse abstrakte Methoden enthält, muss die Klasse als abstrakte Klasse deklariert werden, sonst tritt ein Kompilierungsfehler auf.
Abstrakte Klassen können abstrakte Methoden und nicht abstrakte Methoden enthalten.
Beispiel:
Abstract Class Caravan {privater Doppelpreis; privates Zeichenfolgenmodell; privates Stringjahr; öffentliche abstrakte void gofast (); // Abstract Methode Public Abstract void ChangeColor ();}Zusammenfassung Methoden
Eine abstrakte Methode ist eine Methode ohne Implementierung, und die spezifische Implementierung der Methode wird durch eine Unterklasse bereitgestellt. Abstrakte Methoden können nicht als endgültig und streng deklariert werden.
Jede Unterklasse, die eine abstrakte Klasse erbt, muss alle abstrakten Methoden der übergeordneten Klasse implementieren, es sei denn, die Unterklasse ist auch eine abstrakte Klasse.
Wenn eine Klasse mehrere abstrakte Methoden enthält, muss die Klasse als abstrakte Klasse deklariert werden. Abstrakte Klassen enthalten möglicherweise keine abstrakten Methoden.
Die Erklärung einer abstrakten Methode endet mit einem Semikolon, zum Beispiel: öffentliche abstrakte Probe ();
Beispiel:
öffentliche abstrakte Klasse Superclass {Abstract void m (); // Abstract -Methode} Klasse Subclass erweitert die Superklasse {// Die Abstract -Methode implementieren void m () {.........}}Synchronisierter Modifikator
Die vom synchronisierte Schlüsselwort deklarierte Methode kann nur von einem Thread gleichzeitig zugegriffen werden. Der synchronisierte Modifikator kann auf vier Zugriffsmodifikatoren angewendet werden.
Beispiel:
public synchronisierte void showdetails () {......}Vorübergehender Modifikator
Wenn ein serialisiertes Objekt eine transient modifizierte Instanzvariable enthält, überspringt die Java Virtual Machine (JVM) diese spezifische Variable.
Dieser Modifikator ist in einer Anweisung enthalten, die eine Variable definiert und zur Vorverarbeitung der Datentypen von Klassen und Variablen verwendet wird.
Beispiel:
öffentliche transiente int limit = 55; // wird nicht die öffentliche int b; // wird bestehen bleiben
flüchtiger Modifikator
Volatile modifizierte Mitgliedsvariablen sind gezwungen, den Wert der Mitgliedsvariablen bei jedem Zugriff auf einen Thread aus dem gemeinsamen Speicher erneut zu lesen. Wenn sich die Mitgliedsvariable ändert, ist der Thread gezwungen, den Änderungswert wieder in den gemeinsam genutzten Speicher zu schreiben. Auf diese Weise sehen zwei verschiedene Threads zu jedem Zeitpunkt immer den gleichen Wert einer bestimmten Mitgliedsvariablen. Eine flüchtige Objektreferenz kann null sein.
Beispiel:
öffentliche Klasse Myrunnable -Geräte runnable {private volatile boolean Active; public void run () {active = true; while (aktiv) // Zeile 1 {// Code}} public void stop () {action = false; // Zeile 2}}Im Allgemeinen wird die Run () -Methode in einem Thread aufgerufen und die Stop () -Methode wird in einem anderen Thread aufgerufen. Wenn der Wert in Zeile 1 im Puffer verwendet wird, wird die Schleife nicht gestoppt, wenn das aktive in Zeile 2 auf false eingestellt ist.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels für das Studium oder die Arbeit eines jeden hilfreich sein wird. Ich hoffe auch, Wulin.com mehr zu unterstützen!