Въведение в капсулирането в 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 с кодове и изход. Можете също да прегледате нашите статии, за да научите повече-

  1. Destructor в Java
  2. Оформление в Java
  3. Най-добрите компилатори на Java
  4. Ръководство за капсулиране в C ++
  5. Защо се нуждаем от капсулация в С?
  6. Преглед на капсулирането в JavaScript