Was ist Kapselung in Java?
Die Kapselung in Java ist ein Mechanismus, um Variablen (Daten) und Methoden (Code) als eine Einheit zusammenzufassen. Hierbei werden Informationsdetails ausgeblendet und Daten und Verhalten des Objekts geschützt. Es ist eines der vier wichtigen OOP-Konzepte. Die Encapsulate-Klasse ist einfach zu testen und eignet sich daher auch besser für Unit-Tests.
In diesem Tutorial lernen Sie:
- Was ist Kapselung in Java?
- Lernen Sie die Kapselung anhand eines Beispiels
- Verstecken von Daten in Java
- Getter- und Setter-Methoden in Java
- Abstraktion vs. Verkapselung
- Vorteile der Kapselung in Java
Klicken Sie hier, wenn das Video nicht zugänglich ist
Lernen Sie die Kapselung anhand eines Beispiels
Um zu verstehen, was Kapselung im Detail ist, betrachten Sie die folgende Bankkontoklasse mit Einzahlungs- und Ausgleichsmethoden
class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}
Angenommen, ein Hacker hat Zugriff auf den Code Ihres Bankkontos erhalten. Jetzt versucht er auf zwei Arten, den Betrag -100 auf Ihr Konto einzuzahlen. Lassen Sie uns seine erste Methode oder Herangehensweise sehen.
Ansatz 1: Er versucht, einen ungültigen Betrag (z. B. -100) auf Ihr Bankkonto einzuzahlen, indem er den Code manipuliert.
Die Frage ist nun: Ist das möglich? Lassen Sie untersuchen.
Normalerweise wird eine Variable in einer Klasse wie unten gezeigt als "privat" festgelegt. Es kann nur mit den in der Klasse definierten Methoden zugegriffen werden. Keine andere Klasse oder kein anderes Objekt kann darauf zugreifen.
Wenn ein Datenelement privat ist, bedeutet dies, dass nur innerhalb derselben Klasse auf es zugegriffen werden kann. Keine externe Klasse kann auf private Datenelemente oder Variablen einer anderen Klasse zugreifen.
In unserem Fall kann der Hacker also keinen Betrag von -100 auf Ihr Konto einzahlen.
Ansatz 2 : Hackers erster Ansatz konnte den Betrag nicht einzahlen. Als nächstes versucht er, einen Betrag von -100 unter Verwendung der "Einzahlungs" -Methode einzuzahlen.
Bei der Methodenimplementierung wird jedoch auf negative Werte geprüft. Der zweite Ansatz schlägt also ebenfalls fehl.
Daher setzen Sie Ihre Daten niemals einer externen Partei aus. Das macht Ihre Anwendung sicher.
Der gesamte Code kann als Kapsel betrachtet werden, und Sie können nur über die Nachrichten kommunizieren. Daher die Namenskapselung.
Verstecken von Daten in Java
Durch das Ausblenden von Daten in Java werden die Variablen einer Klasse vor anderen Klassen ausgeblendet. Es kann nur über die Methode ihrer aktuellen Klasse zugegriffen werden. Es verbirgt die Implementierungsdetails vor den Benutzern. Es ist jedoch mehr als nur das Ausblenden von Daten, sondern dient der besseren Verwaltung oder Gruppierung verwandter Daten.
Um einen geringeren Grad an Kapselung in Java zu erreichen, können Sie Modifikatoren wie "geschützt" oder "öffentlich" verwenden. Mit der Kapselung können Entwickler einen Teil des Codes einfach ändern, ohne den anderen zu beeinflussen.
Getter und Setter in Java
Getter und Setter in Java sind zwei herkömmliche Methoden zum Abrufen und Aktualisieren von Werten einer Variablen. Sie werden hauptsächlich zum Erstellen, Ändern, Löschen und Anzeigen der Variablenwerte verwendet. Die Setter-Methode wird zum Aktualisieren von Werten und die Getter-Methode zum Lesen oder Abrufen der Werte verwendet. Sie sind auch als Accessor und Mutator bekannt.
Der folgende Code ist ein Beispiel für Getter- und Setter-Methoden:
class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}
Im obigen Beispiel ist die Methode getBalance () eine Getter-Methode, die den Wert der Variablen account_balance liest, und die Methode setNumber () ist eine Setter-Methode, die den Wert für die Variable account_number festlegt oder aktualisiert.
Abstraktion vs. Verkapselung
Oft wird die Einkapselung mit Abstraktion missverstanden. Lass uns lernen-
- Bei der Kapselung geht es mehr um das "Erreichen" einer Funktionalität
- Bei Abstraktion geht es mehr darum, was eine Klasse tun kann.
Ein einfaches Beispiel, um diesen Unterschied zu verstehen, ist ein Mobiltelefon. Wo die komplexe Logik in der Leiterplatte in einem Touchscreen gekapselt ist und die Schnittstelle bereitgestellt wird, um sie zu abstrahieren.
Vorteile der Kapselung in Java
- Die Kapselung bindet die Daten mit den zugehörigen Funktionen. Hier bedeuten Funktionalitäten "Methoden" und Daten "Variablen"
- Wir behalten also Variablen und Methoden an einem Ort. Dieser Ort ist "Klasse". Klasse ist die Basis für die Kapselung.
- Mit Java Encapsulation können Sie den Zugriff auf wichtige Datenelemente in Ihrem Code ausblenden (einschränken), wodurch die Sicherheit verbessert wird
- Wie bereits erwähnt, kann auf ein Datenelement nur innerhalb derselben Klasse zugegriffen werden, wenn es als "privat" deklariert ist. Keine externe Klasse kann auf Datenelemente (Variablen) anderer Klassen zugreifen.
- Wenn Sie jedoch auf diese Variablen zugreifen müssen, müssen Sie die öffentlichen Methoden "getter" und "setter" verwenden.