Enkapsulacja, settery i gettery w Java

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.

Scroll to Top