Inkapsling i Java är en process för att slå ihop kod och data till en enda enhet t.ex. en kapsel som är blandad av flera läkemedel.
ladda ner youtube med vlc
Vi kan skapa en helt inkapslad klass i Java genom att göra alla datamedlemmar i klassen privata. Nu kan vi använda setter- och gettermetoder för att ställa in och hämta data i den.
De Java Bean klass är exemplet på en helt inkapslad klass.
Fördel med inkapsling i Java
Genom att endast tillhandahålla en setter- eller getter-metod kan du göra klassen skrivskyddad eller skrivskyddad . Du kan med andra ord hoppa över getter- eller settermetoderna.
Det ger dig kontroll över uppgifterna . Anta att du vill ställa in värdet på id som bara ska vara större än 100, du kan skriva logiken i settermetoden. Du kan skriva logiken att inte lagra de negativa talen i sättermetoderna.
Det är ett sätt att uppnå data döljer i Java eftersom andra klasser inte kommer att kunna komma åt data via de privata datamedlemmarna.
Inkapslingsklassen är lätt att testa . Så det är bättre för enhetstestning.
rudyard kipling om förklaring
Standard-IDE:erna tillhandahåller möjligheten att generera getters och setters. Så det är det enkelt och snabbt att skapa en inkapslad klass i Java.
Enkelt exempel på inkapsling i Java
Låt oss se det enkla exemplet på inkapsling som bara har ett fält med sina sätter- och gettermetoder.
Fil: Student.java
Java-serversidor
//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 } }
Fil: 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
Produktion:
vijay
Endast läs-klass
//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 kan du inte ändra värdet på collegedatamedlemmen som är 'AKG'.
s.setCollege('KITE');//will render compile time error
Endast skrivklass
//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 kan du inte få värdet av college, du kan bara ändra värdet på college data medlem.
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
Ett annat exempel på inkapsling i Java
Låt oss se ett annat exempel på inkapsling som bara har fyra fält med sina sätter- och gettermetoder.
Fil: Account.java
virtuellt minne
//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; } }
Fil: 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()); } }Testa det nu
Produktion:
7560504000 Sonoo Jaiswal [email protected] 500000.0