Samouczki Java

Jawa DOM Wprowadzenie do Javy Rozpocznij Java Składnia Javy Komentarze Java Zmienne Javy Typy danych Java Rzutowanie typu Java Operatory Java Ciągi Java Matematyka Java Java logiczne Java, jeśli...inne Przełącznik Java Java podczas pętli Java dla pętli Przerwa/Kontynuacja w Javie Tablice Java

Metody Java

Metody Java Parametry metody Java Przeciążanie metody Java Zakres Java Rekurencja Java

Klasy Java

Java OOP Klasy/obiekty Java Atrybuty klas Java Metody klas Java Konstruktory Javy Modyfikatory Java Enkapsulacja Javy Pakiety Java / API Dziedziczenie Javy Polimorfizm Javy Klasy wewnętrzne Java Abstrakcja Java Interfejs Java Wyliczenia Java Wejście użytkownika Java Data Java Lista tablic Java Połączona lista Java Java HashMap Zestaw skrótów Java Iterator Javy Klasy opakowujące Java Wyjątki Java Java RegEx Wątki Java Jawa Lambda

Obsługa plików Java

Pliki Java Tworzenie/zapis plików Java Odczytywanie plików Java Usuń pliki Java

Jak to zrobić

Dodaj dwie liczby

Odniesienie do Javy

Słowa kluczowe Java Metody ciągów Java Metody matematyczne w języku Java

Przykłady Javy

Przykłady Javy Kompilator Javy Ćwiczenia Java Quiz Java Certyfikat Java


Enkapsulacja Javy


Kapsułkowanie

Znaczenie enkapsulacji polega na upewnieniu się, że „wrażliwe” dane są ukryte przed użytkownikami. Aby to osiągnąć, musisz:

  • zadeklaruj zmienne/atrybuty klas jako private
  • udostępnij publiczne metody pobierania i ustawiania w celu uzyskania dostępu i aktualizacji wartości private zmiennej

Pobierz i ustaw

Z poprzedniego rozdziału dowiedziałeś się, że do privatezmiennych można uzyskać dostęp tylko w obrębie tej samej klasy (klasa zewnętrzna nie ma do niej dostępu). Dostęp do nich jest jednak możliwy, jeśli udostępnimy publiczne metody pobierania i ustawiania .

Metoda getzwraca wartość zmiennej, a setmetoda ustawia wartość.

Składnia obu jest taka, że ​​zaczynają się od albo getlub set, po którym następuje nazwa zmiennej, z pierwszą literą wielką literą:

Przykład

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

Przykład wyjaśniony

Metoda getzwraca wartość zmiennej name.

Metoda setpobiera parametr ( newName) i przypisuje go do namezmiennej. Słowo thiskluczowe służy do odwoływania się do bieżącego obiektu.

Ponieważ jednak namezmienna jest zadeklarowana jako private, nie możemy uzyskać do niej dostępu spoza tej klasy:

Przykład

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

Gdyby zmienna została zadeklarowana jako public, oczekiwalibyśmy następującego wyniku:

John

Jednak gdy próbujemy uzyskać dostęp do privatezmiennej, otrzymujemy błąd:

MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

Zamiast tego używamy metod getName()i w setName()celu uzyskania dostępu i aktualizacji zmiennej:

Przykład

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"


Dlaczego enkapsulacja?

  • Lepsza kontrola atrybutów i metod klas
  • Atrybuty klas mogą być tylko do odczytu (jeśli używasz tylko getmetody) lub tylko do zapisu (jeśli używasz tylko setmetody)
  • Elastyczny: programista może zmienić jedną część kodu bez wpływu na inne części
  • Zwiększone bezpieczeństwo danych