Enkapsulacja jest jednym z czterech fundamentów programowania obiektowego (obok dziedziczenia, polimorfizmu i abstrakcji) i odnosi się do praktyki ukrywania stanu wewnętrznego obiektu oraz wymuszania dostępu do tego stanu poprzez metody. W Javie enkapsulacja jest realizowana za pomocą modyfikatorów dostępu (private, protected, public) oraz przez definicję metod dostępowych, znanych jako settery i gettery. Settery pozwalają na ustawienie wartości pola, natomiast gettery na jej odczyt.
Przykład użycia enkapsulacji, settery i gettery
Załóżmy, że chcemy stworzyć klasę Book
, która przechowuje informacje o książkach, takie jak tytuł, autor i rok wydania. Informacje te powinny być dostępne tylko poprzez odpowiednie metody, aby zapewnić kontrolę nad sposobem ich modyfikacji i dostępu.
Klasa Book
public class Book {
// Pola prywatne
private String title;
private String author;
private int year;
// Konstruktor
public Book(String title, String author, int year) {
this.title = title;
this.author = author;
this.year = year;
}
// Getter dla tytułu
public String getTitle() {
return title;
}
// Setter dla tytułu
public void setTitle(String title) {
this.title = title;
}
// Getter dla autora
public String getAuthor() {
return author;
}
// Setter dla autora
public void setAuthor(String author) {
this.author = author;
}
// Getter dla roku wydania
public int getYear() {
return year;
}
// Setter dla roku wydania
public void setYear(int year) {
this.year = year;
}
}
W powyższym przykładzie, pola klasy Book
są prywatne, co oznacza, że dostęp do nich z zewnątrz klasy jest zablokowany. Dostęp możliwy jest tylko poprzez metody getTitle()
, getAuthor()
, getYear()
do odczytu wartości, oraz setTitle(String)
, setAuthor(String)
, setYear(int)
do ich modyfikacji.
Użycie klasy Book
public class Main {
public static void main(String[] args) {
// Tworzenie obiektu Book
Book myBook = new Book("W pustyni i w puszczy",
"Henryk Sienkiewicz", 1911);
// Wyświetlanie informacji o książce
System.out.println("Książka: " + myBook.getTitle() +
", Autor: " + myBook.getAuthor() +
", Rok wydania: " + myBook.getYear());
// Zmiana roku wydania
myBook.setYear(2020);
// Ponowne wyświetlanie informacji o książce
System.out.println("Zaktualizowana książka: " +
myBook.getTitle() +
", Autor: " + myBook.getAuthor() +
", Rok wydania: " + myBook.getYear());
}
}
Podsumowanie
Enkapsulacja w Javie pozwala na kontrolę dostępu do stanu obiektu, co zwiększa bezpieczeństwo i integralność danych. Settery i gettery są kluczowymi narzędziami w implementacji enkapsulacji, umożliwiając odpowiednio modyfikację i odczyt stanu obiektu. Dzięki enkapsulacji, można zapewnić, że obiekty są używane w zamierzony sposób, a wszystkie zmiany stanu są przewidywalne i kontrolowane.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.