Indkapsling i Java er en proces med at pakke kode og data sammen til en enkelt enhed for eksempel en kapsel, som er blandet af flere lægemidler.
kan android spille gamepigeon
Vi kan oprette en fuldt indkapslet klasse i Java ved at gøre alle datamedlemmer i klassen private. Nu kan vi bruge setter og getter metoder til at indstille og få dataene i det.
Det Java bønne klasse er eksemplet på en fuldt indkapslet klasse.
Fordel ved indkapsling i Java
Ved kun at angive en setter- eller getter-metode kan du lave klassen skrivebeskyttet eller skrivebeskyttet . Med andre ord kan du springe getter- eller setter-metoderne over.
Det giver dig kontrol over dataene . Antag, at du vil indstille værdien af id, som kun skal være større end 100, kan du skrive logikken inde i setter-metoden. Du kan skrive logikken for ikke at gemme de negative tal i sætter-metoderne.
Det er en måde at opnå data skjuler i Java, fordi andre klasser ikke vil være i stand til at få adgang til dataene gennem de private datamedlemmer.
Indkapslingsklassen er let at teste . Så det er bedre til enhedstest.
de tidlige mukere
Standard IDE'erne giver mulighed for at generere gettere og settere. Sådan er det nemt og hurtigt at skabe en indkapslet klasse i Java.
Simpelt eksempel på indkapsling i Java
Lad os se det enkle eksempel på indkapsling, der kun har ét felt med dets setter- og getter-metoder.
Fil: 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 } }
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
Læsebeskyttet 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 kan du ikke ændre værdien af kollegiets datamedlem, som er 'AKG'.
s.setCollege('KITE');//will render compile time error
Kun skrive 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 kan du ikke få værdien af college, du kan kun ændre værdien af college data medlem.
java char til heltal
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
Et andet eksempel på indkapsling i Java
Lad os se et andet eksempel på indkapsling, der kun har fire felter med dens setter- og getter-metoder.
Fil: Account.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; } }
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()); } }Test det nu
Produktion:
7560504000 Sonoo Jaiswal [email protected] 500000.0