Latest web development tutorials

Java-Modifikatoren

Java-Sprache bietet viele Modifikatoren in die folgenden Kategorien unterteilt:

  • Zugriffsmodifikator
  • Nicht Zugriffsmodifikator

Modifier verwendet, um die Klasse, Methode oder Variable zu definieren, in der Regel an der Spitze der Aussage. Durch das folgende Beispiel veranschaulichen:

public class className {
   // ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
   // 方法体
}

Zutrittskontrolle Modifikator

Java, können Sie Zugriffssteuerungszeichen verwenden, um Zugang zu den Klassen, Variablen, Methoden zu schützen, und Konstrukteure. Java unterstützt vier verschiedene Zugriffsrechte.

In der Standardeinstellung auch als Standard, sichtbar im gleichen Paket bekannt, keine Modifikator.

Privat, an private Modifikator angegeben ist, sichtbar in der gleichen Klasse.

Es gibt, um den öffentlichen Modifikator, sichtbar für alle Klassen zu spezifizieren.

Geschützte, auf geschützte Modifikator gibt an, dass für alle Klassen und Unterklassen im gleichen Paket sichtbar.

Der Standard Zugriffsmodifikator - verwenden Sie keine Schlüsselwörter

Verwenden Sie Variablen und in Standard-Zugriffs Modifikator für die Klasse deklarierten Methoden im gleichen Paket sichtbar ist. Schnittstelle, wo Variablen als public static final implizit deklariert werden, und die Schnittstelle, wo die Standard-Zugriffsmethode für die Öffentlichkeit.

Beispiel:

Statement im folgenden Beispiel, Variablen und Methoden können keine Modifier verwenden.

String version = "1.5.1";
boolean processOrder() {
   return true;
}

Privater Zugang Modifikator -privater

Privater Zugang Modifikator ist die strengste Zugangsstufe, es als private Methoden deklariert wird, Variablen und gehört zur Klasse Konstruktor kann nur zugegriffen werden, und die Klassen und Schnittstellen können nicht privat deklariert werden.

Variablen als private Zugriffstyp deklariert sind, können nur außerhalb der Klasse durch Klasse public Getter-Methode zugegriffen werden.

Privater Zugang Modifikator in erster Linie für die Schutzklasse Implementierungsdetails und Daten hinter Klasse verwendet.

Die folgenden Klassen nutzen den privaten Zugriffsmodifikator:

public class Logger {
   private String format;
   public String getFormat() {
      return this.format;
   }
   public void setFormat(String format) {
      this.format = format;
   }
}

Beispiel Logger-Klasse-Format Variable ist eine private Variable, so dass andere Klassen können nicht direkt erhalten und den Wert der Variablen gesetzt. Um definiert zwei öffentliche Methoden in der Lage sein, die andere Klassenvariable zu bedienen: GetFormat () (Rückgabewert-Format) und setFormat (String) (Einstellung Format)

Öffentliche Zugriffsmodifikator -public

Es ist, als öffentliche Klassen deklariert, Methoden, Konstruktoren und Schnittstellen jede andere Art von Zugriff sein kann.

Wenn mehrere gegenseitige Besuche von öffentlichen Klassen in verschiedenen Paketen, müssen Sie das entsprechende Paket öffentliche Klasse befindet importieren. Da Vererbung Klasse, die Klasse aller öffentlichen Methoden und Variablen können durch ihre Unterklassen vererbt werden.

Die folgenden Funktionen nutzen Sie die öffentlichen Zugangskontrolle:

public static void main(String[] arguments) {
   // ...
}

Haupt Java-Programm () Methode muss öffentlich festgelegt werden, andernfalls wird nicht Java-Interpreter der Lage sein, um die Klasse zu laufen.

Geschützte Zugriffsmodifikatoren -geschützten

Deklariert als Variablen geschützt, Methoden und Konstrukteure im selben Paket kann auch jede andere Art des Zugriffs sein und können in verschiedenen Paketen Subklassen zugegriffen werden.

Geschützter Zugriff Wert kann nicht geändert Klassen und Schnittstellen, Methoden werden und Membervariablen können deklariert werden als geschützt, aber die Mitgliedsvariablen und Mitglied Methoden der Schnittstellen können nicht geschützt deklariert werden.

Subklassen kann, ist Zugriffsmodifikator Protected Methoden und Variablen deklariert, so dass wir die nicht verwandten Klassen mit diesen Methoden und Variablen zu schützen.

Die folgende übergeordnete Klasse verwendet geschützten Zugriffsmodifizierer, Subklassen openSpeaker () Methode der Elternklasse außer Kraft setzen.

class AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

class StreamingAudioPlayer {
   boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

Wenn openSpeaker () Methode als privat deklariert wird, dann zusätzlich zu Audioplayer-Klasse kann die Methode nicht zugreifen. Wenn openSpeaker () als öffentlich deklariert wird, dann sind alle Klassen der Lage, die Methode zuzugreifen. Wenn wir den Prozess sichtbar zu den Unterklassen der Klasse machen wollen, dann wird das Verfahren als geschützt erklärt.

Zutrittskontrolle und Vererbung

Bitte beachten Sie die folgenden Methoden Regeln geerbt:

  • Übergeordnete Klasse als öffentliche Methoden in der Unterklasse deklariert werden, müssen auch öffentlich.

  • Übergeordnete Klasse als geschützte Methode in einer Unterklasse erklärt oder erklärt als geschützt, entweder als öffentlich erklärt. Sie können nicht privat deklariert werden.

  • Übergeordnete Klasse als private Methode deklariert wurde, kann nicht vererbt werden.


Nicht Zugriffsmodifikator

Um eine Reihe von anderen Funktionen zu erreichen, bietet Java auch eine Reihe von Non-Access-Modifikatoren.

statischen Modifikator verwendet Klassenmethoden und Klassenvariablen zu erstellen.

Endgültige Modifikator, verwendet zu dekorieren Klassen, Methoden und Variablen, final modifizierte Klasse kann nicht vererbt werden, die modifizierte Methode der Klasse kann nicht vererbt werden neu definiert, modifiziert Variablen konstant, kann nicht geändert werden.

Abstrakt Modifikator zu schaffen abstrakte Klassen und abstrakte Methoden verwendet.

Synchronisiert und flüchtige Modifikatoren, vor allem für die Programmierung von Threads.

Statische Modifikator

  • Statische Variablen:

    Static Schlüsselwort verwendet wird statische Variablen unabhängig von dem Objekt zu erklären, egal, wie viele Objekte eine Klasse instanziiert wird, ist es nur eine Kopie einer statischen Variablen. Statische Variablen auch als Klassenvariablen bekannt. Lokale Variablen können nicht als statische Variablen deklariert werden.

  • Statische Methoden:

    Static Schlüsselwort wird verwendet, ein Objekt zu erklären, unabhängig von der statischen Methode. Statische Methoden können nicht nicht-statische Variablen Klasse. Statische Methode, die Daten aus der Parameterliste zu bekommen, und dann die Daten zu berechnen.

Der Zugriff auf Klassenvariablen und Methoden können direkt classname.variablename und classname.methodname des Zugangs verwendet werden.

Im folgenden Beispiel wird statischen Modifikator zu erstellen Klassenmethoden und Klassenvariablen verwendet.

public class InstanceCounter {
   private static int numInstances = 0;
   protected static int getCount() {
      return numInstances;
   }

   private static void addInstance() {
      numInstances++;
   }

   InstanceCounter() {
      InstanceCounter.addInstance();
   }

   public static void main(String[] arguments) {
      System.out.println("Starting with " +
      InstanceCounter.getCount() + " instances");
      for (int i = 0; i < 500; ++i){
         new InstanceCounter();
          }
      System.out.println("Created " +
      InstanceCounter.getCount() + " instances");
   }
}

Beispiele für die obigen Editieroperation Ergebnisse sind wie folgt:

Started with 0 instances
Created 500 instances

Endgültige Qualifier

Endgültige Variablen:

Schluss Variablen explizit nur einmal initialisiert und initialisiert werden. Es wird erklärt als Zielobjekte auf ein anderes Objekt nicht zeigen kann. Aber die endgültige Ziel wo die Daten geändert werden. Das letzte Referenzobjekt kann nicht geändert werden, aber deren Wert geändert werden kann.

Endgültige Modifikator wird in der Regel zusammen verwendet, um einen statischen Modifikator Klasse konstant zu erstellen.

Beispiel:

public class Test{
  final int value = 10;
  // 下面是声明常量的实例
  public static final int BOXWIDTH = 6;
  static final String TITLE = "Manager";

  public void changeValue(){
     value = 12; //将输出一个错误
  }
}

Endgültige Verfahren

Finale Klasse Methoden von Unterklassen geerbt, aber die Unterklassen nicht ändern können.

Der Hauptzweck des Verfahrens ist die endgültige Erklärung dieses Verfahrens zu verhindern, wird geändert.

Wie unten gezeigt, in der Abschlusserklärung Modifikator Methoden.

public class Test{
    public final void changeName(){
       // 方法体
    }
}

Endgültige Kategorie

Abschlussklassen kann nicht vererbt werden, kann keine Klasse keines der Merkmale der endgültigen Klasse erben.

Beispiel:

public final class Test {
   // 类体
}

Abstrakt Modifikator

Abstrakte Klasse:

Eine abstrakte Klasse kann nicht ein Objekt instanziiert verwendet werden, der einzige Zweck der Erklärung ist eine abstrakte Klasse für die zukünftige Erweiterung dieser Klasse.

Eine Klasse kann nicht abstrakt und endgültig geändert werden. Wenn eine Klasse abstrakte Methoden enthält, muss die Klasse als abstrakte Klasse deklariert werden, sonst, einen Compiler-Fehler.

Eine abstrakte Klasse kann abstrakte Methoden enthalten und nicht-abstrakte Methoden.

Beispiel:

abstract class Caravan{
   private double price;
   private String model;
   private String year;
   public abstract void goFast(); //抽象方法
   public abstract void changeColor();
}

Abstrakte Methode

Keine Methode ist eine abstrakte Methode Implementierung, die spezifische Implementierung des Verfahrens von Unterklassen zur Verfügung gestellt. Abstrakte Methoden können nicht als endgültig und streng deklariert werden.

Jede Unterklasse erbt die abstrakte Klasse müssen alle abstrakten Methoden der Elternklasse zu implementieren, es sei denn, die Unterklasse ist auch abstrakte Klasse.

Wenn eine Klasse eine Reihe von abstrakten Methoden enthält, muss die Klasse als abstrakte Klasse deklariert werden. Eine abstrakte Klasse kann nicht abstrakte Methoden enthalten.

Abstrakte Methodendeklaration endet mit einem Semikolon, zum Beispiel: public abstract Probe ();

Beispiel:

public abstract class SuperClass{
    abstract void m(); //抽象方法
}
 
class SubClass extends SuperClass{
     //实现抽象方法
      void m(){
          .........
      }
}

Synchronisierte Modifikator

Methode Schlüsselwort Synchronisierte zur gleichen Zeit nur ein Thread Zugriff zu erklären. Synchronisierte Modifikator kann auf die vier Zugriffsmodifikatoren angewendet werden.

Beispiel:

public synchronized void showDetails(){
.......
} 

Transient modifier

Serialisierten Objekt durch transiente Instanzvariablen geändert enthält, Java Virtual Machine (JVM), die bestimmte Variable zu überspringen.

Der Modifikator wird in der Definition der Variablen Rechnung zur Vorverarbeitung Datentypklassen und Variablen.

Beispiel:

public transient int limit = 55;   // will not persist
public int b; // will persist

Volatile Modifikatoren

Flüchtige modifizierte Membervariable jedes Mal, wenn Threads zugegriffen wird gezwungen sind, den Wert der Membervariable aus dem gemeinsamen Speicher neu zu lesen. Auch wenn die Membervariable ändert, wird ein Thread gezwungen ist, den Wert wieder auf den gemeinsam genutzten Speicher geschrieben zu ändern. Damit jederzeit immer zwei verschiedene Threads den gleichen Wert einer Membervariable zu sehen.

Eine flüchtige Objektreferenz kann null sein.

Beispiel:

public class MyRunnable implements Runnable
{
    private volatile boolean active;
    public void run()
    {
        active = true;
        while (active) // 第一行
        {
            // 代码
        }
    }
    public void stop()
    {
        active = false; // 第二行
    }
}

Unter normalen Umständen ist ein Thread ruft run () -Methode (in Runnable offenen Gewinde) in einem anderen Thread Anrufe () -Methode zu stoppen. Wenn der aktive Wert in der ersten Zeile des Puffers verwendet wird, in der zweiten Reihe , wenn der aktive Zyklus falsch ist nicht zu stoppen.

Allerdings ist die obige Code verwenden wir eine modifizierte flüchtigen aktiv, so wird der Zyklus zu stoppen.