Java-Kapselung
Java-Kapselung
In diesem Tutorial lernen Sie anhand von Beispielen etwas über die Kapselung und das Verbergen von Daten in Java.
Java-Kapselung
Kapselung ist eines der Hauptmerkmale der objektorientierten Programmierung. Kapselung bezieht sich auf die Bündelung von Feldern und Methoden innerhalb einer einzigen Klasse.
Es verhindert, dass äußere Klassen auf Felder und Methoden einer Klasse zugreifen und diese ändern. Dies trägt auch zum Datenverbergen bei .
Beispiel 1:Java-Kapselung
class Area {
// fields to calculate area
int length;
int breadth;
// constructor to initialize values
Area(int length, int breadth) {
this.length = length;
this.breadth = breadth;
}
// method to calculate area
public void getArea() {
int area = length * breadth;
System.out.println("Area: " + area);
}
}
class Main {
public static void main(String[] args) {
// create object of Area
// pass value of length and breadth
Area rectangle = new Area(5, 6);
rectangle.getArea();
}
}
Ausgabe
Area: 30
Im obigen Beispiel haben wir eine Klasse namens Area erstellt . Der Hauptzweck dieser Klasse ist die Flächenberechnung.
Um eine Fläche zu berechnen, benötigen wir zwei Variablen:length und Breite und eine Methode:getArea()
. Daher haben wir diese Felder und Methoden in einer einzigen Klasse gebündelt.
Hier kann auch von anderen Klassen aus auf die Felder und Methoden zugegriffen werden. Daher ist dies kein Datenverbergen .
Dies ist nur Einkapselung . Wir halten nur ähnliche Codes zusammen.
Hinweis :Die Leute betrachten Kapselung oft als das Verbergen von Daten, aber das ist nicht ganz richtig.
Kapselung bezeichnet die Bündelung verwandter Felder und Methoden. Dies kann verwendet werden, um das Verbergen von Daten zu erreichen. Die Kapselung an sich ist kein Verbergen von Daten.
Warum Kapselung?
- In Java hilft uns die Kapselung, verwandte Felder und Methoden zusammenzuhalten, was unseren Code sauberer und leichter lesbar macht.
- Es hilft, die Werte unserer Datenfelder zu kontrollieren. Beispiel:
class Person { private int age; public void setAge(int age) { if (age >= 0) { this.age = age; } } }
Hier machen wir das Zeitalter Variableprivate
und Anwenden von Logik innerhalb vonsetAge()
Methode. Nun, Alter kann nicht negativ sein. - Die Getter- und Setter-Methoden sind schreibgeschützt oder schreibgeschützt Zugriff auf unsere Klassenfelder. Beispiel:
getName() // provides read-only access setName() // provides write-only access
- Es hilft, Komponenten eines Systems zu entkoppeln. Beispielsweise können wir Code in mehrere Bündel kapseln.
Diese entkoppelten Komponenten (Bundle) können unabhängig voneinander und gleichzeitig entwickelt, getestet und debuggt werden. Und alle Änderungen an einer bestimmten Komponente wirken sich nicht auf andere Komponenten aus. - Wir können das Verbergen von Daten auch durch Kapselung erreichen. Wenn wir im obigen Beispiel die Längen- und Breitenvariablen in privat ändern, wird der Zugriff auf diese Felder eingeschränkt.
Und sie werden vor äußeren Klassen verborgen gehalten. Dies wird als Datenverbergung bezeichnet .
Verbergen von Daten
Das Ausblenden von Daten ist eine Möglichkeit, den Zugriff unserer Datenmitglieder einzuschränken, indem die Implementierungsdetails ausgeblendet werden. Die Kapselung bietet auch eine Möglichkeit zum Verbergen von Daten.
Wir können Zugriffsmodifikatoren verwenden, um das Verbergen von Daten zu erreichen. Zum Beispiel
Beispiel 2:Verbergen von Daten mit dem privaten Bezeichner
class Person {
// private field
private int age;
// getter method
public int getAge() {
return age;
}
// setter method
public void setAge(int age) {
this.age = age;
}
}
class Main {
public static void main(String[] args) {
// create an object of Person
Person p1 = new Person();
// change age using setter
p1.setAge(24);
// access age using getter
System.out.println("My age is " + p1.getAge());
}
}
Ausgabe
My age is 24
Im obigen Beispiel haben wir einen private
Feld Alter . Da es private
ist , kann von außerhalb der Klasse nicht darauf zugegriffen werden.
Um auf Alter zuzugreifen haben wir public
verwendet Methoden:getAge()
und setAge()
. Diese Methoden werden Getter- und Setter-Methoden genannt.
Alter machen private ermöglichte es uns, den unbefugten Zugriff von außerhalb der Klasse einzuschränken. Dies ist Datenverbergung .
Wenn wir versuchen, auf das age zuzugreifen -Feld aus dem Main Klasse erhalten wir eine Fehlermeldung.
// error: age has private access in Person
p1.age = 24;
Java