Инкапсуляция в Java

Опубликовано: 15 Февраля, 2022

Инкапсуляция определяется как упаковка данных в один блок. Это механизм, который связывает код и данные, которыми он управляет. Другой способ думать об инкапсуляции - это защитный экран, который предотвращает доступ к данным для кода за пределами этого экрана.

  • Технически при инкапсуляции переменные или данные класса скрыты от любого другого класса и могут быть доступны только через любую функцию-член его собственного класса, в котором он объявлен.
  • Как и при инкапсуляции, данные в классе скрыты от других классов с использованием концепции сокрытия данных, которая достигается за счет того, что члены или методы класса становятся закрытыми, и класс предоставляется конечному пользователю или миру без предоставления каких-либо подробностей. за реализацией с использованием концепции абстракции, поэтому она также известна как комбинация сокрытия данных и абстракции .
  • Инкапсуляция может быть достигнута путем объявления всех переменных в классе как частных и написания общедоступных методов в классе для установки и получения значений переменных.

The program to access variables of the class EncapsulateDemo is shown below:  

Java

// Java program to demonstrate encapsulation
class Encapsulate {
    // private variables declared
    // these can only be accessed by
    // public methods of class
    private String geekName;
    private int geekRoll;
    private int geekAge;
 
    // get method for age to access
    // private variable geekAge
    public int getAge() { return geekAge; }
 
    // get method for name to access
    // private variable geekName
    public String getName() { return geekName; }
 
    // get method for roll to access
    // private variable geekRoll
    public int getRoll() { return geekRoll; }
 
    // set method for age to access
    // private variable geekage
    public void setAge(int newAge) { geekAge = newAge; }
 
    // set method for name to access
    // private variable geekName
    public void setName(String newName)
    {
        geekName = newName;
    }
 
    // set method for roll to access
    // private variable geekRoll
    public void setRoll(int newRoll) { geekRoll = newRoll; }
}
 
public class TestEncapsulation {
    public static void main(String[] args)
    {
        Encapsulate obj = new Encapsulate();
 
        // setting values of the variables
        obj.setName("Harsh");
        obj.setAge(19);
        obj.setRoll(51);
 
        // Displaying values of the variables
        System.out.println("Geek"s name: " + obj.getName());
        System.out.println("Geek"s age: " + obj.getAge());
        System.out.println("Geek"s roll: " + obj.getRoll());
 
        // Direct access of geekRoll is not possible
        // due to encapsulation
        // System.out.println("Geek"s roll: " +
        // obj.geekName);
    }
}
Output
Geek"s name: Harsh
Geek"s age: 19
Geek"s roll: 51

В приведенной выше программе класс EncapsulateDemo инкапсулирован, поскольку переменные объявлены как частные. Методы get, такие как getAge (), getName (), getRoll (), установлены как общедоступные, эти методы используются для доступа к этим переменным. Методы установки, такие как setName (), setAge (), setRoll (), также объявлены как общедоступные и используются для установки значений переменных.

Преимущества инкапсуляции :

  • Скрытие данных: пользователь не будет иметь представления о внутренней реализации класса. Пользователю не будет видно, как класс хранит значения в переменных. Пользователь будет знать только то, что мы передаем значения методу установки, и переменные инициализируются этим значением.
  • Повышенная гибкость: мы можем сделать переменные класса доступными только для чтения или для записи, что только в зависимости от наших требований. Если мы хотим сделать переменные доступными только для чтения, мы должны опустить методы установки, такие как setName (), setAge () и т. Д. Из приведенной выше программы, или если мы хотим сделать переменные доступными только для записи, мы должны опустить методы получения, такие как getName (), getAge () и т. д. из вышеуказанной программы
  • Возможность повторного использования: инкапсуляция также улучшает возможность повторного использования и ее легко изменить в соответствии с новыми требованиями.
  • Тестировать код легко: инкапсулированный код легко протестировать для модульного тестирования.

Автор статьи - Харш Агарвал. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .