Modyfikatory nie dostępowe

Modyfikatory nie dostępowe dla klas, pól,  metod i konstruktorów – nie kontrolują poziomu dostępu, ale zapewniają inne funkcje. Dla klas wyróżniamy:

  • final – oznacza, że klasa nie może być dziedziczona przez inne klasy. Przykładem takiej klasy jest klasa String.
  • abstract – oznacza, że nie można użyć tej klasy do stworzenia obiektów. Aby uzyskać dostęp do elementów klasy abstrakcyjnej, musimy rozszerzyć tą klasę inną klasą (nie abstrakcyjną).

Natomiast dla pól i metod wyróżniamy następujące modyfikatory:

  • final –  pole nie może być zmodyfikowane oraz nadpisane, a metoda nie może być przesłonięta/nadpisana (@override). Zmienna finalna również nie może zostać zmieniona ponieważ ich wartość jest przypisana tylko raz. Nazywane są małymi literami. Finalne mogą być również parametry metody lub konstruktorów. Oznacza to że nie można do nich przypisać nowych wartości ani wewnątrz metody ani konstruktora.
  • static – pola i metody należą do klasy, a nie do obiektu. Pole statyczne istnieje tylko w jednym egzemplarzu. Nie można odwoływać się za pomocą metod statycznych do niestatycznych elementów klasy.
  • static final lub final static (kolejność bez znaczenia)- stała, przypisanej do niej wartości nie można już zmienić, zmienne zapisane wielkimi literami. Jeśli nazwa zmiennej składa się z kilku wyrazów to są one oddzielane znakiem podkreślenia „_”. Często są wykorzystywane do definowania twz. „magicznych liczb” które niczego nam nie mówią np: public static final int YEAR_DAYS = 365; Nie można takich zmiennych deklarować wewnątrz metod, czy konstruktorów. Aby odwołać się do takich ziemnych należy zapisać: nazwaKlasy.nazwaZmiennejStatycznej. Finalnych metod statycznych nie można ukryć w klasie pochodnej.
  • abstract – może być używany tylko w klasie abstrakcyjnej i używany tylko w metodach. Taka metoda nie ma ciała, na przykład: abstract void run();
  • transient –  oznacza, że atrybuty i metody są pomijane podczas serializowania obiektu, jaki je zawiera.
  • synchronized – oznacza, że dostęp do metod może uzyskać tylko jeden wątek naraz.
  • volatile – oznacza, że wartość atrybutu nie jest buforowana lokalnie i zawsze jest odczytywana z „pamięci głównej”.

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *