OCA Metody i enkapsulacja

Struktura metody

dostęp modyfikatory typZwracany nazwa parametry
pierwsze dwa nie są obowiązkowe.

Opcjonalne modyfikatory:
static, abstract, final, synchronized, native, strictfp mogą występować w dowolnej kolejności, konstruktor nie może mieć żadnego z nich.

static oraz final są dozwolone dla pól i metod
transient oraz volatile – tylko dla pól
synchronized, abstract oraz native – tylko dla metod
final – dozwolone dla zmiennych lokalnych.

Klasy finalne nie mogą być rozszerzane a metody nadpisywane (ale mogą być przeciążane).
Zmiennie finalne nie mogą zmienić wartości ale mogą być przesłonięte.

Statyczna metoda finalna nie może być przesłaniana.

Może istnieć metoda i pole o tej samej nazwie w tym samym zasięgu.


Wywołanie metody

Przy dopasowaniu metody do wywołania java używa metody z najdokładniejszymi typami parametrów, nigdy typy zmiennych nie są zawężane (w przeciwieństwie do przypisywania zmiennych całkowitych). Dotyczy także konstruktorów.

Priorytety przy dopasowaniach:

  • dokładne dopasowanie
  • bardziej pojemny typ
  • automatyczne opakowywanie
  • varargs

Przeprowadzana jest tylko jedna konwersja.
Nie będzie konwersji na bardziej pojemny typ prosty a następnie jego odpowiednik obiektowy.

Wywołanie metody protected na rzecz obiektu z innego pakietu jest możliwe tylko jeśli posługujemy się referencją podklasy.
W przypadku posługiwania się referencją w innym pakiecie to musi być referencja typu dziedziczącego.

Modyfikator private dotyczy wszystkich obiektów tego typu a nie tylko jednego obiektu (patrz equals()).

Do metod i pól statycznych można odwoływać się przez referencję instancji (nawet jeśli wskazuje na null).

Przy wywoływaniu metody z nullem wywoływana jest najbardziej szczegółowa implementacja (klasa która jest najniżej w hierarchii dziedziczenia).

Odwoływanie do pól lub metod statycznych klasy nadrzędnej jest możliwe przez referencje klasy dziedziczącej (ale klasa dziedzicząca nie jest wtedy ładowana).

Metoda statyczna nie ma dostępu do metod i pól instancyjnych.

Finalna zmienna musi być zainicjalizowany w konstruktorze lub w inicjalizacji instancyjnej, ewentualnie w sekcji statycznej jeśli jest statyczny.

Finalne zmienne typów prostych są konwertowane do literałów (są znane w czasie kompilacji).

Typ podawany w lamdzie musi być identyczny z typem w sygnaturze interfejsu funkcyjnego. Jeśli w interfejsie jest List wtedy ArrayList w lambdzie się nie skompiluje.

Źródła:
„OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808” Jeanne Boyarsky, Scott Selikoff
„JA+ V8 for Oracle Certified Associate – Java SE8 Programmer I” http://enthuware.com

Dodaj komentarz

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