Инкапсуляция в Java
Инкапсуляция определяется как упаковка данных в один блок. Это механизм, который связывает код и данные, которыми он управляет. Другой способ думать об инкапсуляции - это защитный экран, который предотвращает доступ к данным для кода за пределами этого экрана.
- Технически при инкапсуляции переменные или данные класса скрыты от любого другого класса и могут быть доступны только через любую функцию-член его собственного класса, в котором он объявлен.
- Как и при инкапсуляции, данные в классе скрыты от других классов с использованием концепции сокрытия данных, которая достигается за счет того, что члены или методы класса становятся закрытыми, и класс предоставляется конечному пользователю или миру без предоставления каких-либо подробностей. за реализацией с использованием концепции абстракции, поэтому она также известна как комбинация сокрытия данных и абстракции .
- Инкапсуляция может быть достигнута путем объявления всех переменных в классе как частных и написания общедоступных методов в классе для установки и получения значений переменных.
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); } } |
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 и многому другому, см. Полный курс подготовки к собеседованию .