- Klasy nie wewnętrzne mogą być tylko public.
- Metody public mogą być przeciążone przez klasy pochodne.
- Klasy pochodne nie mają dostępu do prywatnych zmiennych, metod, czy klas wewnętrznych.
- Dostęp domyślny - każdy obiekt znajdujący się w tym samym pakiecie ma dostęp do danego atrybutu.
- Tylko zmienne i metody mogą być protected. Do obiektów protected mają dostęp wszystkie obiekty z tego samego pakietu, jak i klasy, które dziedziczą po danym obiekcie, a są w innym pakiecie.
- Obiekty o niższej dostępności mogą być przeciążane przez klasy pochodne, jeśli ten nadają taką samą dostępność lub większą. Dla przykładu, metoda private void xxx(), może zostać przeciążona w klasie pochodnej na public void xxx().
Klasa musi zostać zadeklarowana jako abstrakcyjna gdy posiada jedną lub więcej abstrakcyjnych metod, klasa dziedzicz jakąś abstrakcyjną metodą z innej klasy, dla której nie udostępnia implementacji; lub klasa implementuje interfejs, lecznie nie zawiera implementacji dla każdej z jego metod. Klasa nie może być abstrakcyjna i finalna, ale abstrakcyjna klasa może posiadać finalne metody. Metoda nie może być jednocześnie finalna i abstrakcyjna.
W metodach static nie można uzywać this. Statycznych metod nie można przeciążyć jako nonstatic. Kod wewnątrz static {} wywoływany jest dokładnie raz kiedy klasa jest ładowana. Zmienne public, protected i default mogą być static import do klas w obrębie tego samego pakietu. Do innych pakietów, mogą być tylko pubic.
Native może dotyczyc tylko metody.
Volatile - zmienna może być dostępna asynchronicznie, istotne w środowiskach wieloprocesorowych.
TODO: Nauczyć tabelki na stronie 124.
Brak komentarzy:
Prześlij komentarz