Latest web development tutorials

modyfikatory Java

Język Java oferuje wiele modyfikatorów, podzielonych na następujące kategorie:

  • modyfikator dostępu
  • modyfikator dla dostępu

Modyfikator służy do określenia danej klasy, metody lub zmiennej, zwykle w czołówce zestawienia. Za pomocą następującego przykładu, aby zilustrować:

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

modyfikator kontrola dostępu

Java, można używać znaków kontroli dostępu, aby chronić dostęp do klas, zmiennych, metod i konstruktorów. Java obsługuje cztery różne prawa dostępu.

Domyślnie, znany również jako domyślne, widoczne wewnątrz tym samym opakowaniu, nie stosować żadnego modyfikatora.

Prywatnie, prywatne modyfikator jest określony, widoczne w obrębie tej samej klasy.

w celu określenia modyfikator publicznego, widoczny dla wszystkich klas istnieją.

Chronione, aby chronić modyfikator stanowi, że dla wszystkich klas i podklas w ramach tego samego pakietu widzialnego.

Modyfikator domyślny dostępu - nie używać żadnych słów kluczowych

Używać zmiennych i metod zadeklarowanych w domyślnej modyfikatora dostępu dla klasy w ramach tego samego pakietu jest widoczna. Interfejs gdzie zmienne są niejawnie zadeklarowana jako public static final, a interfejs gdzie domyślną metodą dostępu dla publiczności.

Przykład:

Oświadczenie w poniższym przykładzie, zmienne i metody nie można użyć dowolnego modyfikatora.

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

Prywatny dostęp modyfikator -prywatna

Dostęp Prywatna modyfikator jest najbardziej rygorystyczny poziom dostępu, to jest zadeklarowana jako metod prywatnych, zmiennych, i należy do konstruktora klasy można uzyskać tylko, a klasy i interfejsy nie mogą zostać uznane za prywatne.

Zmienne zadeklarowane jako prywatny rodzaju dostępu można uzyskać tylko poza klasą przez klasy metody pochłaniacza publicznego.

modyfikator Prywatny dostęp używany głównie do szczegółów implementacyjnych i klasa ochrony danych za klasę.

Poniższe klasy korzystać z prywatnej modyfikator dostępu:

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

Przykład zmienna Format klasy Logger jest zmienna prywatna, więc inne klasy nie można bezpośrednio pobrać i ustawić wartość zmiennej. Aby móc obsługiwać inną zmienną klasy definiuje dwie metody publiczne: getFormat () (format wartość zwrotna) i setFormat (string) (ustawienie formatu)

Publiczny dostęp modyfikator -public

Jest on zadeklarowany jako klas publicznych, metod, konstruktorów i interfejsy mogą być dowolny inny rodzaj dostępu.

Jeśli szereg wzajemnych wizyt klas publicznych w różnych pakietów, trzeba importować odpowiedni pakiet rezyduje public class. Ponieważ spadkowego klasie, klasa wszystkich publicznych metod i zmiennych mogą być dziedziczone przez jej podklasy.

Następujące funkcje kontroli dostępu publicznego:

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

Metoda główny program Java () musi być ustawiony na publiczny, inaczej interpreter Javy nie będzie w stanie uruchomić klasę.

Chronione modyfikatory dostępu zabezpieczonego

Jest zadeklarowana jako chroniona zmiennych, metod i konstruktorów w tym samym opakowaniu może być dowolny inny rodzaj dostępu, i są dostępne w różnych pakietów podklasy.

Chronione modyfikator dostępu nie może być modyfikowana klas i interfejsów, metod i zmienne składowe mogą być zadeklarowane jako chronione, ale zmienne składowe i metody członkowskie interfejsów nie można uznać za chronione.

Podklasy mogą uzyskać dostęp modyfikator deklaruje chronione metody i zmienne, tak, że możemy chronić klas niepowiązanych za pomocą tych metod i zmiennych.

Poniższa klasa dominująca korzysta z chronionych modyfikator dostępu podklasy zastąpić metodę openSpeaker () klasy nadrzędnej.

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

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

Jeśli metoda openSpeaker () jest zadeklarowana jako prywatne, a oprócz klasy odtwarzacze audio nie mają dostępu do tej metody. Jeśli openSpeaker () jest zadeklarowana jako publiczna, wszystkie klasy są w stanie uzyskać dostęp do tej metody. Jeśli chcemy, aby proces widoczna dla podklasy klasy, to metoda jest zadeklarowana jako chroniona.

Kontrola dostępu i dziedziczenie

Proszę zwrócić uwagę na następujące metody dziedziczone zasad:

  • klasa nadrzędna zadeklarowane jako publiczne metody w podklasie musi być publiczna.

  • klasa nadrzędna zadeklarowane jako chronione metody w podklasie lub zadeklarowane jako chronione, albo deklarowane jako społeczeństwa. Nie może być uznana za prywatne.

  • klasa nadrzędna zadeklarowane jako metody prywatnego nie może być dziedziczona.


modyfikator dla dostępu

W celu osiągnięcia liczby innych cech, Java zawiera również wiele modyfikatorów bez dostępu.

modyfikator static służy do tworzenia metod klas i zmiennych klasy.

Ostateczna modyfikatora do dekoracji klas, metod i zmiennych ostatecznie zmodyfikowanej klasy nie może być dziedziczone, zmodyfikowana metoda klasie nie może być dziedziczone zreformowanego zmodyfikowane zmienne stałe nie mogą zostać zmienione.

Streszczenie modyfikator wykorzystywane do tworzenia abstrakcyjnych klas i metody abstrakcyjne.

Zsynchronizowane i lotne modyfikatory, głównie do wątków programowych.

statyczny modyfikator

  • Zmienne statyczne:

    Hasło statyczna służy do deklarowania zmiennych statycznych niezależnych obiektu, bez względu na to, ile obiektów klasy jest tworzony, jest tylko jedna kopia zmiennej statycznej. Zmienne statyczne znany również jako zmienne klasy. Zmienne lokalne nie może być uznana jako zmienne statyczne.

  • Metody statyczne:

    kluczowe statyczne służy do deklarowania obiekt jest niezależne od metody statycznej. Metody statyczne nie można używać non-statyczną klasę zmiennych. Metoda statyczna, aby uzyskać dane z listy parametrów, a następnie obliczyć dane.

Dostęp do zmiennych i metod klasy mogą być wykorzystywane bezpośrednio classname.variablename i classname.methodname dostępu.

W poniższym przykładzie, modyfikator static służy do tworzenia metod klas i zmiennych klasy.

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");
   }
}

Przykłady powyższych operacji edycyjnych wyniki przedstawiają się następująco:

Started with 0 instances
Created 500 instances

Finał kwalifikatora

Zmienne końcowe:

Zmienne końcowe mogą być inicjowane i jawnie inicjowana tylko raz. Odniesienie jest zadeklarowana jako końcowe przedmiotów nie może wskazywać na inny obiekt. Ale ostateczna docelowy, w którym dane mogą być zmieniane. To ostateczna obiekt odniesienia nie może być zmieniony, ale wartość, która może być zmieniana.

Ostateczna modyfikator stosuje się zwykle ze sobą, tworząc statycznego klasy modyfikator stałej.

Przykład:

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

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

metoda ostateczna

Metody końcowe klasy dziedziczone przez podklasy, ale nie może modyfikować podklasy.

Głównym celem tej metody jest zapobieganie końcowa deklaracja tej metody jest modyfikowany.

Jak widać poniżej, używając metod ostatecznych deklaracji modyfikatorów.

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

Finał kategorii

Klasy końcowe nie może być dziedziczone, bez klasy może dziedziczyć każda z cech końcowego klasy.

Przykład:

public final class Test {
   // 类体
}

Streszczenie modyfikator

Klasa abstrakcyjna:

Abstrakcyjna klasa nie może być użyty do utworzenia wystąpienia obiektu, jedynym celem pisma jest klasą abstrakcyjną dla przyszłej ekspansji tej klasy.

Klasa nie może być modyfikowana abstrakcyjne i ostateczne. Jeśli klasa zawiera metody abstrakcyjne, klasa musi być zadeklarowany jako klasy abstrakcyjnej, w przeciwnym razie błąd kompilatora.

Klasa abstrakcyjna może zawierać metody abstrakcyjne i nie abstrakcyjnych metod.

Przykład:

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

Streszczenie Sposób

Żadna metoda nie jest abstrakcyjną wdrożenie metody, konkretne wdrożenie metody przewidzianej przez podklasy. Abstrakt metody nie mogą zostać uznane za ostateczne i ścisłe.

Każda podklasa dziedziczy abstrakcyjna klasa musi implementować wszystkie abstrakcyjne metody klasy nadrzędnej, chyba że podklasa jest klasa abstrakcyjna.

Jeśli klasa zawiera szereg metod abstrakcyjnych, klasa musi być zadeklarowany jako klasy abstrakcyjnej. Klasa abstrakcyjna nie może zawierać metody abstrakcyjne.

Streszczenie deklaracją metody kończy się średnikiem, na przykład: public abstract próbkę ();

Przykład:

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

zsynchronizowane modyfikator

Metoda synchroniczne słowa kluczowego zadeklarować w tym samym czasie tylko jeden dostęp do wątku. Zsynchronizowane modyfikator można stosować na cztery modyfikatory dostępu.

Przykład:

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

Przejściowa modyfikator

Serialized Obiekt zawiera zmodyfikowany przez nieustalonych zmiennych instancji, Java maszyny wirtualnej (JVM), aby pominąć tej zmiennej.

Modyfikator jest zawarty w definicji rachunku zmiennych dla przeróbki klasy typ danych i zmienne.

Przykład:

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

lotne Modyfikatory

Lotny zmiennej członkiem modyfikowany za każdym razem jest ona dostępna wątki są zmuszeni do ponownego odczytania wartości zmiennej członek z pamięci współdzielonej. Również, gdy zmienia zmienną składową, wątek zostaje zmuszony do zmiany wartości zapisywane do pamięci współdzielonej. Tak że w każdej chwili, dwa gwinty się zawsze w tę samą wartość zmiennej członka.

Lotny odniesienia obiekt może być null.

Przykład:

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

W normalnych okolicznościach wątek wywołuje () metoda run (w Runnable otwartym wątku) w innym wątku rozmowy zatrzymać metodę (). Jeśli aktywny wartość w pierwszym rzędzie stosuje się buforu w drugim rzędzie, gdy aktywny jest fałszywy cyklu nie zatrzyma.

Jednakże powyższy kod, używamy zmodyfikowanym lotne aktywna, więc cykl zatrzyma.