Zapuzdrenie v jazyku Java je a proces spájania kódu a údajov do jedného celku napríklad kapsula, ktorá je zmiešaná z niekoľkých liekov.
Plne zapuzdrenú triedu v jazyku Java môžeme vytvoriť tak, že všetky dátové členy triedy označíme za súkromné. Teraz môžeme použiť metódy setter a getter na nastavenie a získanie údajov v ňom.
The Java Bean trieda je príkladom plne zapuzdrenej triedy.
Výhoda zapuzdrenia v Jave
Poskytnutím iba metódy setter alebo getter môžete vytvoriť triedu len na čítanie alebo len na zápis . Inými slovami, môžete preskočiť metódy getter alebo setter.
Poskytuje vám kontrolu nad údajmi . Predpokladajme, že chcete nastaviť hodnotu id, ktorá by mala byť väčšia ako 100, môžete napísať logiku do metódy setter. Môžete napísať logiku, aby sa záporné čísla neukladali do metód nastavovania.
Je to spôsob, ako to dosiahnuť skrytie údajov v jazyku Java, pretože iná trieda nebude môcť pristupovať k údajom prostredníctvom súkromných údajových členov.
Trieda enkapsulácie je ľahko otestovať . Takže je to lepšie na testovanie jednotiek.
Štandardné IDE poskytujú zariadenie na generovanie getrov a nastavovačov. Takže je jednoduché a rýchle vytvorenie zapuzdrenej triedy v Jave.
Jednoduchý príklad zapuzdrenia v Jave
Pozrime sa na jednoduchý príklad zapuzdrenia, ktoré má iba jedno pole s metódami setter a getter.
Súbor: 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 } }
Súbor: 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
Výkon:
vijay
Trieda len na čítanie
//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; } }
Teraz nemôžete zmeniť hodnotu člena s údajmi o škole, ktorý je 'AKG'.
s.setCollege('KITE');//will render compile time error
Trieda len na písanie
//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; } }
Teraz nemôžete získať hodnotu vysokej školy, môžete zmeniť iba hodnotu člena údajov vysokej školy.
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
Ďalší príklad zapuzdrenia v Jave
Pozrime sa na ďalší príklad zapuzdrenia, ktoré má iba štyri polia s metódami setter a getter.
Súbor: 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; } }
Súbor: 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()); } }Vyskúšajte to
Výkon:
7560504000 Sonoo Jaiswal [email protected] 500000.0