Java -Kapselung
Verkapselung
Die Bedeutung von Encapsulation besteht darin, sicherzustellen, dass "sensible" Daten vor Benutzern verborgen sind. Um dies zu erreichen, müssen Sie:
- deklarieren Sie Klassenvariablen/Attribute als
private
- Stellen Sie öffentliche Get-
und Set-
private
Methoden bereit, um auf den Wert einer Variablen zuzugreifen und ihn zu aktualisieren
Holen und setzen
Sie haben aus dem vorherigen Kapitel gelernt, dass private
auf Variablen nur innerhalb derselben Klasse zugegriffen werden kann (eine Klasse außerhalb hat keinen Zugriff darauf). Es ist jedoch möglich, auf sie zuzugreifen, wenn wir öffentliche Get- und Set- Methoden bereitstellen.
Die get
Methode gibt den Variablenwert zurück, und die set
Methode legt den Wert fest.
Die Syntax für beide ist, dass sie mit entweder get
oder beginnen set
, gefolgt vom Namen der Variablen, wobei der erste Buchstabe in Großbuchstaben geschrieben ist:
Beispiel
public class Person {
private String name; // private = restricted access
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
Beispiel erklärt
Die get
Methode gibt den Wert der Variablen zurück name
.
Die set
Methode nimmt einen Parameter ( newName
) und weist ihn der
name
Variablen zu. Das this
Schlüsselwort wird verwendet, um auf das aktuelle Objekt zu verweisen.
Da die name
Variable jedoch als deklariert ist private
, können wir
von außerhalb dieser Klasse nicht darauf zugreifen:
Beispiel
public class Main {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
}
}
Wenn die Variable als deklariert public
wurde, würden wir die folgende Ausgabe erwarten:
John
Wenn wir jedoch versuchen, auf eine private
Variable zuzugreifen, erhalten wir eine Fehlermeldung:
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
Stattdessen verwenden wir die Methoden getName()
und setName()
, um auf die Variable zuzugreifen und sie zu aktualisieren:
Beispiel
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"
Warum Kapselung?
- Bessere Kontrolle über Klassenattribute und Methoden
- Klassenattribute können schreibgeschützt (wenn Sie nur die
get
Methode verwenden) oder schreibgeschützt (wenn Sie nur dieset
Methode verwenden) gemacht werden. - Flexibel: Der Programmierer kann einen Teil des Codes ändern, ohne andere Teile zu beeinflussen
- Erhöhte Datensicherheit