Iekapsulēšana Java valodā ir koda un datu iesaiņošanas process vienā vienībā , piemēram, kapsula, kas ir sajaukta no vairākām zālēm.
Mēs varam izveidot pilnībā iekapsulētu klasi Java, padarot visus klases datu dalībniekus privātus. Tagad mēs varam izmantot setter un getter metodes, lai iestatītu un iegūtu tajā esošos datus.
The Java pupiņas klase ir pilnībā iekapsulētas klases piemērs.
Iekapsulēšanas priekšrocības Java
Nodrošinot tikai setera vai gettera metodi, varat izveidot klasi tikai lasāms vai tikai rakstāms . Citiem vārdiem sakot, varat izlaist getter vai setter metodes.
Tas nodrošina jums kontrolēt datus . Pieņemsim, ka vēlaties iestatīt id vērtību, kurai vajadzētu būt lielākai par 100, varat ierakstīt loģiku iestatītāja metodē. Varat ierakstīt loģiku, lai negatīvos skaitļus nesaglabātu iestatītāja metodēs.
Tas ir veids, kā sasniegt datu slēpšana Java, jo cita klase nevarēs piekļūt datiem, izmantojot privātos datu dalībniekus.
Iekapsulātu klase ir viegli pārbaudīt . Tātad, tas ir labāks vienības testēšanai.
git statuss -s
Standarta IDE nodrošina iespēju ģenerēt ieguvējus un iestatītājus. Tā tas ir viegli un ātri izveidot iekapsulētu klasi Java valodā.
Vienkāršs Java iekapsulēšanas piemērs
Apskatīsim vienkāršo iekapsulēšanas piemēru, kuram ir tikai viens lauks ar iestatītāja un ieguvēja metodēm.
Fails: 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 } }
Fails: 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
Izvade:
vijay
Tikai lasīšanas klase
//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; } }
Tagad jūs nevarat mainīt koledžas datu dalībnieka vērtību, kas ir “AKG”.
java krāsas
s.setCollege('KITE');//will render compile time error
Tikai rakstīšanas klase
//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; } }
Tagad jūs nevarat iegūt koledžas vērtību, jūs varat mainīt tikai koledžas datu dalībnieka vērtību.
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
Vēl viens Java iekapsulēšanas piemērs
Apskatīsim vēl vienu iekapsulēšanas piemēru, kurā ir tikai četri lauki ar iestatītāja un ieguvēja metodēm.
Fails: 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; } }
Fails: 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()); } }Izmēģiniet to tagad
Izvade:
7560504000 Sonoo Jaiswal [email protected] 500000.0