Kapselung in Java ist ein Prozess, bei dem Code und Daten in einer einzigen Einheit zusammengefasst werden , zum Beispiel eine Kapsel, die aus mehreren Arzneimitteln gemischt ist.
Wir können eine vollständig gekapselte Klasse in Java erstellen, indem wir alle Datenmitglieder der Klasse privat machen. Jetzt können wir Setter- und Getter-Methoden verwenden, um die darin enthaltenen Daten festzulegen und abzurufen.
Der Java Bean Klasse ist das Beispiel einer vollständig gekapselten Klasse.
Vorteil der Kapselung in Java
Indem Sie nur eine Setter- oder Getter-Methode bereitstellen, können Sie die Klasse erstellen schreibgeschützt oder schreibgeschützt . Mit anderen Worten: Sie können die Getter- oder Setter-Methoden überspringen.
Es bietet Ihnen das Kontrolle über die Daten . Angenommen, Sie möchten den Wert von id festlegen, der nur größer als 100 sein sollte, Sie können die Logik in die Setter-Methode schreiben. Sie können die Logik so schreiben, dass die negativen Zahlen nicht in den Setter-Methoden gespeichert werden.
Es ist ein Weg, etwas zu erreichen Daten verstecken in Java, da andere Klassen nicht über die privaten Datenmitglieder auf die Daten zugreifen können.
Die Encapsulate-Klasse ist einfach zu testen . Daher eignet es sich besser für Unit-Tests.
Die Standard-IDEs bieten die Möglichkeit, die Getter und Setter zu generieren. So ist es einfach und schnell eine gekapselte Klasse erstellen in Java.
Einfaches Beispiel für Kapselung in Java
Sehen wir uns das einfache Beispiel einer Kapselung an, die nur ein Feld mit ihren Setter- und Getter-Methoden hat.
Datei: Student.java
//A Java class which is a fully encapsulated class. //It has a private data member and getter and setter methods. package com.javatpoint; public class Student{ //private data member private String name; //getter method for name public String getName(){ return name; } //setter method for name public void setName(String name){ this.name=name } }
Datei: Test.java
//A Java class to test the encapsulated class. package com.javatpoint; class Test{ public static void main(String[] args){ //creating instance of the encapsulated class Student s=new Student(); //setting value in the name member s.setName('vijay'); //getting value of the name member System.out.println(s.getName()); } }
Compile By: javac -d . Test.java Run By: java com.javatpoint.Test
Ausgabe:
vijay
Schreibgeschützte Klasse
//A Java class which has only getter methods. public class Student{ //private data member private String college='AKG'; //getter method for college public String getCollege(){ return college; } }
Jetzt können Sie den Wert des College-Datenelements „AKG“ nicht ändern.
s.setCollege('KITE');//will render compile time error
Schreibgeschützte Klasse
//A Java class which has only setter methods. public class Student{ //private data member private String college; //getter method for college public void setCollege(String college){ this.college=college; } }
Jetzt können Sie den Wert der Hochschule nicht ermitteln, sondern nur den Wert des Hochschuldatenelements ändern.
System.out.println(s.getCollege());//Compile Time Error, because there is no such method System.out.println(s.college);//Compile Time Error, because the college data member is private. //So, it can't be accessed from outside the class
Ein weiteres Beispiel für Kapselung in Java
Sehen wir uns ein weiteres Beispiel einer Kapselung an, die mit ihren Setter- und Getter-Methoden nur vier Felder hat.
Datei: Account.java
nfa zu dfa
//A Account class which is a fully encapsulated class. //It has a private data member and getter and setter methods. class Account { //private data members private long acc_no; private String name,email; private float amount; //public getter and setter methods public long getAcc_no() { return acc_no; } public void setAcc_no(long acc_no) { this.acc_no = acc_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } }
Datei: TestAccount.java
//A Java class to test the encapsulated class Account. public class TestEncapsulation { public static void main(String[] args) { //creating instance of Account class Account acc=new Account(); //setting values through setter methods acc.setAcc_no(7560504000L); acc.setName('Sonoo Jaiswal'); acc.setEmail('[email protected]'); acc.setAmount(500000f); //getting values through getter methods System.out.println(acc.getAcc_no()+' '+acc.getName()+' '+acc.getEmail()+' '+acc.getAmount()); } }Testen Sie es jetzt
Ausgabe:
7560504000 Sonoo Jaiswal [email protected] 500000.0