Въведение в капсулирането в Java
Капсулацията е една от четирите основни обектно-ориентирани концепции за програмиране в Java. Основната идея зад това е скриването на детайлите за внедряване от потребителите. С други думи, капсулирането е обвиване на данни в едно цяло, за да се предотврати достъпът до него от външния свят. Тъй като данните са скрити от другите класове, този процес е известен и като скриване на данни. Нека разгледаме работата на крушка като пример. Не знаем реалната работа зад крушката, дори и да я използваме. Но в случай на Java капсулация е възможен достъп до данните с модификатори. Нека да го разгледаме в следващия раздел.
Как действа капсулирането в Java?
Капсулацията работи в Java от
- Деклариране на атрибутите или променливите в клас като частни
Например, ние създаваме служител от класа. Променливите трябва да бъдат зададени като частни, както е показано по-долу.
private String EmpName;
private int EmpID;
private int EmpSal;
- Създаване на публични методи в клас с цел получаване и задаване на атрибути или променливи.
Следва методът get и set метод за различните частни променливи в класа Служител.
Код:
public int getEmpSal()
(
return EmpSal;
)public String getEmpName()
(
return EmpName;
)
public int getEmpID()
(
return EmpID;
)
public void setEmpSal( int EmpSal)
(
this.EmpSal = EmpSal;
)
public void setEmpName(String EmpName)
(
this.EmpName = EmpName;
)
public void setEmpID( int EmpID)
(
this.EmpID = EmpID;
)
С помощта на тези методи е възможно класът да бъде само за запис или само за четене, т.е. можем да пропуснем тези методи, ако е необходимо.
По-долу са някои от предимствата на капсулирането.
- Простота в приложението
- Възможност за повторно използване или промяна на кода въз основа на изискванията
- Ограничава достъпността на данните
- Лесност при тестване на единица, тъй като кодът е капсулиран
Java Bean Class е един от примерите за напълно капсулирания клас, тъй като всички членове на данните в класа са частни.
Примери за Java капсулиране
Нека да видим пример за капсулиране с методите на гетер и сетер. За това създайте 2 класа - един с основен метод и други с методи за получаване и задаване.
Пример 1
- Employee.java
Код:
//Java program for Encapsulation with both read and write
public class Employee (
//private variables which can be accessed by public methods of the class
private String EmpName;
private int EmpID;
private int EmpSal;
// get method to access the private integer variable EmpSal
public int getEmpSal()
(
return EmpSal;
)
// get method to access the private string variable EmpName
public String getEmpName()
(
return EmpName;
)
// get method to access the private integer variable EmpID
public int getEmpID()
(
return EmpID;
)
// set method to access the private integer variable EmpSal
public void setEmpSal( int EmpSal)
(
this.EmpSal = EmpSal;
)
// set method to access the private string variable EmpName
public void setEmpName(String EmpName)
(
this.EmpName = EmpName;
)
// set method to access the private integer variable EmpID
public void setEmpID( int EmpID)
(
this.EmpID = EmpID;
)
)
- EmployeeEncaps.java
Код:public class EmployeeEncaps (
public static void main(String() args) (
Employee EmpObj= new Employee(); //object of the class Employee
//passing the values to the methods using object
EmpObj.setEmpName("Anna");
EmpObj.setEmpSal(30000);
EmpObj.setEmpID(670311);
// Printing values of the variables
System.out.println("Employee's Name: " + EmpObj.getEmpName());
System.out.println("Employee's ID: " + EmpObj.getEmpID());
System.out.println("Employee's Salary: " + EmpObj.getEmpSal());
)
)
изход:
В горната програма класът Служител е капсулиран, тъй като променливите са частни. Възможно е да се чете и записва реализацията, тъй като е получила и задавала методи. Частните променливи като EmpName, EmpSal, EmpID се осъществяват чрез тези методи и се показват чрез извикване на методите, използващи обекта.
Сега, нека да видим как работи капсулацията с клас само за четене.
Пример 2
- Employee.java
Код:
//Java program for Encapsulation with read permission
public class Employee (
//private variables which can be accessed by public methods of the class
private String EmpName = "Adam";
private int EmpID = 670388;
private int EmpSal = 35000;
// get method to access the private integer variable EmpSal
public int getEmpSal()
(return EmpSal;
)// get method to access the private string variable EmpName
public String getEmpName()
(
return EmpName;
)
// get method to access the private integer variable EmpID
public int getEmpID()
(
return EmpID;
)
)
- EmployeeEncaps.java
Код:
public class EmployeeEncaps (
public static void main(String() args) (
Employee EmpObj= new Employee(); //object of the class Employee
// Printing values of the variables
System.out.println("Employee's Name: " + EmpObj.getEmpName());
System.out.println("Employee's ID: " + EmpObj.getEmpID());
System.out.println("Employee's Salary: " + EmpObj.getEmpSal());
)
)
изход:
Подобно на първия пример, и тук ние използваме частни променливи. Разликата е, че не използваме метода set, за да задаваме стойности за частните променливи в класа. Вместо това ние директно присвояваме стойността на променливите.
Сега можем да продължим да пишем само клас.
Пример 3
- Employee.java
Код:
//Java program for Encapsulation with write permission
public class Employee (
//private variables which can be accessed by public methods of the class
private String EmpName;
private int EmpID;
private int EmpSal;
// set method to access the private integer variable EmpSal
public void setEmpSal( int EmpSal)
(
this.EmpSal = EmpSal;
//for sample output
System.out.println("Employee's Salary: " + EmpSal);
)
// set method to access the private string variable EmpName
public void setEmpName(String EmpName)
(
this.EmpName = EmpName;
//for sample output
System.out.println("Employee's Name: " + EmpName);
)// set method to access the private integer variable EmpID
public void setEmpID( int EmpID)
(
this.EmpID = EmpID;
//for sample output
System.out.println("Employee's ID: " + EmpID);
)
)
- EmployeeEncaps.java
Код:
public class EmployeeEncaps (
public static void main(String() args) (
Employee EmpObj = new Employee(); //object of the class Employee
//passing the values to the methods using object
EmpObj.setEmpName("Iza");
EmpObj.setEmpID(670472);
EmpObj.setEmpSal(48000);
)
)
изход:
В горния пример, ние не използваме метод get, за да постигнем клас само за запис. т.е. променливите не могат да бъдат променяни или извличани тук. Тъй като не е възможно да се получат стойностите, ние използваме печат вътре в зададения метод за изваждане на проба.
заключение
Капсулирането е концепция на OOP, където данните ще бъдат обвивани, криейки всички подробности за внедряването. Тя може да бъде постигната чрез използване на частни променливи и методи, като например получаване, задаване на достъп до променливите. Основните предимства на капсулацията включват гъвкавост, скриване на данни, лекота при тестване и повторна употреба .
Препоръчителни статии
Това е ръководство за капсулиране в Java. Тук обсъждаме как работи капсулацията, примери за капсулиране на Java с кодове и изход. Можете също да прегледате нашите статии, за да научите повече-
- Destructor в Java
- Оформление в Java
- Най-добрите компилатори на Java
- Ръководство за капсулиране в C ++
- Защо се нуждаем от капсулация в С?
- Преглед на капсулирането в JavaScript