Капсулация в Java е процес на опаковане на код и данни заедно в една единица , например капсула, която е смесена от няколко лекарства.
кръгла математическа java
Можем да създадем напълно капсулиран клас в Java, като направим всички членове на данните на класа частни. Сега можем да използваме методи за настройка и получаване, за да зададем и получим данните в него.
The Java Bean клас е пример за напълно капсулиран клас.
Предимство на капсулирането в Java
Като предоставите само сетер или метод за получаване, можете да направите класа само за четене или само за запис . С други думи, можете да пропуснете методите getter или setter.
Осигурява ви контрол върху данните . Да предположим, че искате да зададете стойността на id, която трябва да бъде само по-голяма от 100, можете да напишете логиката вътре в метода за настройка. Можете да напишете логиката да не съхранявате отрицателните числа в методите за настройка.
Това е начин за постигане скриване на данни в Java, защото друг клас няма да има достъп до данните чрез частните членове на данните.
Класът на капсулиране е лесен за тестване . Така че е по-добре за тестване на единици.
персонализирано изключение в java
Стандартните IDE предоставят възможност за генериране на гетери и сетери. Така е лесно и бързо създаване на капсулиран клас в Java.
Прост пример за капсулиране в Java
Нека да видим простия пример за капсулиране, който има само едно поле със своите методи за настройка и получаване.
Файл: 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 } }
Файл: 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
Изход:
vijay
Клас само за четене
//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; } }
Сега не можете да промените стойността на члена на данните на колежа, който е „AKG“.
s.setCollege('KITE');//will render compile time error
Клас само за писане
//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; } }
Сега не можете да получите стойността на колежа, можете само да промените стойността на данните за член на колежа.
iphone emojis на android
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
Друг пример за капсулиране в Java
Нека видим друг пример за капсулиране, което има само четири полета със своите методи за настройка и получаване.
Файл: 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; } }
Файл: 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()); } }Тествайте сега
Изход:
7560504000 Sonoo Jaiswal [email protected] 500000.0