Введение в Инкапсуляцию в Java

Инкапсуляция является одной из четырех основных концепций объектно-ориентированного программирования в Java. Основная идея заключается в том, чтобы скрыть детали реализации от пользователей. Другими словами, инкапсуляция - это объединение данных в единый блок для предотвращения доступа к нему из внешнего мира. Поскольку данные скрыты от других классов, этот процесс также известен как скрытие данных. Давайте рассмотрим работу лампы в качестве примера. Мы не знаем, как работает лампа, даже если мы ее используем. Но в случае Java Encapsulation можно получить доступ к данным с помощью модификаторов. Давайте посмотрим на это в следующем разделе.

Как инкапсуляция работает в Java?

Инкапсуляция работает в Java

  • Объявление атрибутов или переменных в классе как личных

Например, мы создаем класс Employee. Переменные должны быть приватными, как показано ниже.

private String EmpName;
private int EmpID;
private int EmpSal;

  • Создание открытых методов в классе для получения и установки атрибутов или переменных.

Ниже приведены метод get и метод set для различных закрытых переменных в классе Employee.

Код:

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 класса - один с методом main, а другой с методами получения и установки.

Пример 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());
)
)

Выход:

В приведенной выше программе класс Employee инкапсулирован, поскольку переменные являются закрытыми. Можно читать и записывать реализацию, так как она получила и установила методы. Доступ к закрытым переменным, таким как EmpName, EmpSal, EmpID, осуществляется с помощью этих методов и отображается путем вызова методов с использованием объекта.

Теперь давайте посмотрим, как работает Encapsulation с классом только для чтения.

Пример 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 для достижения класса только для записи. т.е. переменные не могут быть изменены или извлечены здесь. Поскольку получить значения невозможно, мы используем print внутри метода set для вывода образца.

Вывод

Инкапсуляция - это концепция ООП, в которой данные будут упакованы, скрывая все детали реализации. Это может быть достигнуто с помощью закрытых переменных и методов, таких как get, set для доступа к переменным. Основными преимуществами Encapsulation являются гибкость, скрытие данных, простота тестирования и возможность повторного использования .

Рекомендуемые статьи

Это было руководство по инкапсуляции в Java. Здесь мы обсудим, как работает инкапсуляция, примеры Java Encapsulation с кодами и выводом. Вы также можете просмотреть наши статьи, чтобы узнать больше

  1. Деструктор на Яве
  2. Макет в Java
  3. Лучшие компиляторы Java
  4. Руководство по инкапсуляции в C ++
  5. Зачем нам нужна инкапсуляция в C?
  6. Обзор инкапсуляции в JavaScript