-
Wymagany jest modyfikator dostępu , który opisuje dostępność klasy, obiektu lub pola: w przypadku jego braku JVM (jest to takie źródło uniwersalnej magii) automatycznie przypisuje pakietowi domyślny identyfikator.
Począwszy od drugiego modyfikatora istnieją modyfikatory braku dostępu, które nie są obowiązkowe i mogą również ze sobą kolidować (ale przede wszystkim).
-
Modyfikator Static wskazuje, że klasa, obiekt lub pole jest statyczne. Ale co to oznacza? Zasadniczo spróbujemy tego na polach.
Zmienne statyczne nazywane są zmiennymi klasowymi i są unikalne dla wszystkich instancji tej klasy. Metody statyczne można wywoływać bez tworzenia obiektu, w którym są zadeklarowane. Klasy statyczne stosuje się przy zagnieżdżaniu jednej klasy w drugiej, a zasada interakcji pomiędzy klasą wewnętrzną i zewnętrzną jest podobna do metod (to temat na osobne omówienie). Może być również używany jako oddzielny blok w obiekcie.
-
Modyfikator Final skutecznie wskazuje zmiennej, że jest ona stałą. Dla metod - że nie można ich przesłonić podczas dziedziczenia, natomiast dla klas jest to wskazówka, że nie można po nich dziedziczyć (niezmienne).
Modyfikatory statyczne i końcowe dotyczą klas, obiektów i pól. Istnieją jednak modyfikatory, które dotyczą tylko niektórych z nich (lub nawet ich części, ponieważ zarówno zmienna, jak i metoda są polem, ale nie wszystkie modyfikatory dotyczą obu). Jeśli narysujemy analogię, tylko buty i rękawiczki można zaczarować na prędkość (aby przyspieszyć), ale zaklęcie czapki na prędkość jest bezcelowe (a Uniwersalna Rada Nadzorcza (kompilator) na to nie pozwoli).
-
Modyfikator Abstrakcyjny ma zastosowanie tylko do metod i klas . Metoda abstrakcyjna to metoda bez implementacji (treści).
Jeśli klasa jest oznaczona jako abstrakcyjna, zawiera ona metody abstrakcyjne lub ma na celu uniemożliwienie tworzenia instancji tej klasy. Jeśli narysujemy analogię, w środku instrukcji widać nagłówek „Kolorowanie obiektu”, po którym nie ma opisu. Te. korzystając z tej instrukcji możesz stworzyć obiekt, możesz go także pokolorować, ale ta konkretna instrukcja nie mówi jak (napisz własną instrukcję tworzenia czerwonego obiektu na podstawie tego obiektu i opisz, jak go pokolorować).
-
Modyfikator Synchronized jest używany tylko w przypadku metod. Jego obecność wskazuje, że w danym momencie może go wykonać tylko jeden wątek. Może być również użyty jako oddzielny blok kodu w obiekcie (określając obiekt synchronizacji).
-
Modyfikator Volatile - tylko dla zmiennych . Zalecane jest stosowanie go w przypadku zmiennych, które mogą być używane jednocześnie przez wiele wątków. Zmienna z takim modyfikatorem jest natychmiast kopiowana z pamięci podręcznej procesora do pamięci głównej przy każdej zmianie, dzięki czemu równoległe wątki mogą otrzymać najnowszą wartość.
Warto zauważyć, że volatile ma zastosowanie w przypadkach, gdy tylko jeden wątek może pisać do zmiennej, a reszta może tylko z niej czytać. W innych przypadkach lepiej dodać synchronized modyfikator do metod, które zapisują do zmiennej niestabilnej.
-
Modyfikator przejściowy – tylko dla zmiennych . Modyfikator ten oznacza zmienne, które należy pominąć przy serializacji obiektu (jest to na tyle sprytny proces, że w zasadzie sam możesz o tym przeczytać...)*
* - Napisałem ten artykuł na poziomie 17 i do tego czasu nie opisano serializacji jako procesu, więc zamiast kopiować i wklejać, radzę ci przestudiować to samodzielnie, jeśli to konieczne.
- Final i Volatile - jeśli chodzi o zmienną, to nie możemy jednocześnie powiedzieć, że jest ona ostateczna (stała) i że kilka wątków ma możliwość jej zmiany... Przecież jest stała i w każdej chwili wątek może ją odczytać , ale żaden wątek nie jest w stanie zmienić tej stałej (Powszechna Rada Nadzorcza na to nie pozwoli).
- Final i Abstrakt - klasy i metody nie mogą być jednocześnie abstrakcyjne (co w większości przypadków implikuje konieczność ich doprecyzowania do wdrożenia) i ostateczne, tj. niezmienny. Okazuje się, że instrukcja mówi, jak stworzyć dobry, trwały hełm z dowolnego materiału (część abstrakcyjna), ale w tym celu nie może być w nim dziur (ostatnia obowiązkowa część nie może zostać zmieniona).
- Abstrakcyjna i statyczna — metoda abstrakcyjna nie może być jednocześnie statyczna ani zsynchronizowana. Statyczna metoda abstrakcyjna nie ma sensu, ponieważ nie tylko nic nie robi, ale także należy do całej klasy - wynik jest bezużyteczny.
- Abstrakcyjna i synchronizowana – po co synchronizować pracę metodą, która nic nie robi?
GO TO FULL VERSION