Hermetyzacja (enkapsulacja) pozwala ograniczyć dostęp do danych składowych, metod obiektów klas poprzez ich ukrycie „na zewnątrz” (np: przed innymi obiektami). Dostęp do tych elementów odbywa się poprzez tzw. modyfikatory dostępu.
W Javie mamy cztery modyfikatory:
- public – dostęp do elementów (składowych, metod, klasy lub interfejsu) ma każdy obiekt,
- private – najbardziej restrykcyjny modyfikator; umożliwia dostęp do elementów tylko w obrębie danej klasy; elementy prywatne nie mogą być dziedziczone,
- protected – podobnie jak w private, z tym, że elementy chronione mogą być dziedziczone,
- domyślny – modyfikator (bez słowa kluczowego) pozwala na dostęp do elementów w obrębie danego pakietu.
Aby uzyskać dostęp do zmiennych prywatnych stosuje się publiczne metody get i set.
Ich konstrukcja ma postać:
1 2 3 4 5 6 7 8 9 |
private typ zmienna; public void setNazwaZmiennej(typ nowa_zmienna) { zmienna = nowa_zmienna; // ustawia zmienną } public typ getNazwaZmiennej() { return zmienna; // zwraca zmienną } |
Przykład:
Klasa Hello.java zawiera zmienną prywatną firstname oraz metody dostępowe setFirstname i getFirstname. Pierwsza ustawia imię, a druga zwraca imię. Metody te posłużą do wyświetlenia komunikatu powitalnego z imieniem np: Witaj John.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Hello { private String firstname; public void setFirstname(String yourname) { firstname = yourname; } public String getFirstname() { return firstname; } } |
Tworzymy drugi plik HelloTest.java z klasą testującą:
1 2 3 4 5 6 7 8 9 |
class HelloTest { public static void main(String[] args) { Hello hi = new Hello(); hi.setFirstname("John"); System.out.println("Witaj " + hi.getFirstname()); } } |
Na początku tworzymy nowy obiekt klasy Hello (z pliku Hello.java):
1 |
Hello hi = new Hello(); |
Zmienna referencyjna hi odwołuje się do metody setFirstname i ustawia imię:
1 |
hi.setFirstname("John"); |
Metoda getFirstname zwraca imię, a wynik operacji wyświetla polecenie systemowe: System.out.println:
1 |
System.out.println("Witaj " + hi.getFirstname()); |
Efekt będzie taki 🙂
1 |
Witaj John |
Czytaj dalej: DZIEDZICZENIE →