Enkapsulacja to jedna z czterech podstawowych koncepcji programowania obiektowego (OOP). Pozwala na ukrycie szczegółów implementacji klasy i ograniczenie dostępu do nich tylko do metod tej klasy. W Javie enkapsulacja jest najczęściej realizowana przez użycie prywatnych pól klasy oraz publicznych metod dostępowych, znanych jako settery i gettery. Te metody umożliwiają bezpieczny dostęp i modyfikację prywatnych pól klasy z zewnątrz. Jako przykład, zobaczmy klasę Account
, która reprezentuje konto bankowe z możliwością ustawienia i pobrania salda.
Przykład kodu: Klasa Account z enkapsulacją
// Definicja klasy Account
public class Account {
// Prywatne pole klasy przechowujące saldo
private double balance;
// Konstruktor klasy Account
public Account(double initialBalance) {
if (initialBalance > 0) {
this.balance = initialBalance;
}
}
// Metoda do ustawiania (setter) salda
public void setBalance(double balance) {
if (balance > 0) {
this.balance = balance;
}
}
// Metoda do pobierania (getter) salda
public double getBalance() {
return balance;
}
// Metoda do dodawania środków na konto
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
}
// Klasa z metodą main do demonstracji użycia klasy Account
public class AccountTest {
public static void main(String[] args) {
// Utworzenie obiektu klasy Account
Account myAccount = new Account(50.0);
// Wyświetlenie początkowego salda
System.out.println("Początkowe saldo: " +
myAccount.getBalance());
// Dodanie środków na konto
myAccount.deposit(25.0);
// Wyświetlenie zaktualizowanego salda
System.out.println("Zaktualizowane saldo: " +
myAccount.getBalance());
}
}
Komentarze do kodu
- Definicja klasy
Account
: Klasa reprezentuje konto bankowe z prywatnym polembalance
, które przechowuje saldo konta. - Prywatne pole
balance
: Ogranicza dostęp do zmiennej saldo tylko do metod wewnętrznych klasyAccount
, zabezpieczając je przed nieautoryzowanym dostępem. - Konstruktor: Pozwala na inicjalizację konta z początkowym saldem, o ile przekazana wartość jest dodatnia.
- Setter
setBalance
: Umożliwia bezpieczną zmianę salda, pod warunkiem, że nowa wartość jest dodatnia. - Getter
getBalance
: Umożliwia bezpieczne pobranie wartości salda. - Metoda
deposit
: Umożliwia dodanie środków do salda, jeśli przekazana kwota jest dodatnia.
Podsumowanie
Enkapsulacja za pomocą setterów i getterów w Javie to podstawowy mechanizm ochrony danych i logiki biznesowej klasy przed niepożądanym dostępem z zewnątrz. Umożliwia ona nie tylko bezpieczeństwo, ale także elastyczność w zarządzaniu stanem obiektów, ponieważ zmiany w implementacji klasy nie wpływają bezpośrednio na kod, który z tych klas korzysta. Przykład klasy Account
pokazuje, jak można efektywnie zastosować enkapsulację do zarządzania stanem konta bankowego.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs Java od podstaw w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.