Inkapseling op Java is een proces waarbij code en gegevens samen in één eenheid worden verpakt bijvoorbeeld een capsule waarin verschillende medicijnen zijn gemengd.
kern Java-taal
We kunnen een volledig ingekapselde klasse in Java creëren door alle gegevensleden van de klasse privé te maken. Nu kunnen we setter- en getter-methoden gebruiken om de gegevens erin in te stellen en op te halen.
De Java-boon klasse is het voorbeeld van een volledig ingekapselde klasse.
Voordeel van inkapseling in Java
Door alleen een setter- of getter-methode op te geven, kunt u de klasse maken alleen-lezen of alleen-schrijven . Met andere woorden, u kunt de getter- of setter-methoden overslaan.
Het biedt u de controle over de gegevens . Stel dat u de waarde van id wilt instellen, die alleen groter mag zijn dan 100, dan kunt u de logica in de setter-methode schrijven. U kunt de logica schrijven om de negatieve getallen niet op te slaan in de setter-methoden.
Het is een manier om iets te bereiken gegevens verbergen in Java omdat andere klassen geen toegang hebben tot de gegevens via de privégegevensleden.
De ingekapselde klasse is gemakkelijk te testen . Het is dus beter voor unit-testen.
1 miljard tot miljoen
De standaard IDE's bieden de mogelijkheid om getters en setters te genereren. Zo is het eenvoudig en snel een ingekapselde klasse te creëren op Java.
Eenvoudig voorbeeld van inkapseling in Java
Laten we eens kijken naar het eenvoudige voorbeeld van inkapseling dat slechts één veld heeft met zijn setter- en getter-methoden.
Bestand: Student.java
wat is desktop.ini
//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 } }
Bestand: 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
Uitgang:
vijay
Alleen-lezen-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; } }
Nu kunt u de waarde van het collegegegevenslid, namelijk 'AKG', niet wijzigen.
s.setCollege('KITE');//will render compile time error
Alleen-schrijven-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; } }
Nu kunt u de waarde van het college niet achterhalen, u kunt alleen de waarde van het collegegegevenslid wijzigen.
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
Nog een voorbeeld van inkapseling op Java
Laten we nog een voorbeeld van inkapseling bekijken dat slechts vier velden heeft met zijn setter- en getter-methoden.
Bestand: Account.java
referentievariabele in Java
//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; } }
Bestand: 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()); } }Test het nu
Uitgang:
7560504000 Sonoo Jaiswal [email protected] 500000.0