Инкапсуляция в Java
Что такое инкапсуляция Java?
Инкапсуляция в Java — это механизм объединения переменных (данных) и методов (кода) в единое целое. Это процесс сокрытия деталей информации и защиты данных и поведения объекта. Это одна из четырех важных концепций ООП. Класс инкапсуляции легко тестировать, поэтому он также лучше подходит для модульного тестирования.
Нажмите здесь если видео недоступно
Изучите инкапсуляцию в Java с примером
Чтобы понять, что такое инкапсуляция, рассмотрим следующий класс банковского счета с методами депозита и отображения баланса.
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
Предположим, что хакеру удалось получить доступ к коду вашего банковского счета. Теперь он пытается внести сумму -100 на ваш счет двумя способами. Давайте рассмотрим его первый метод или подход.
Подход 1: Он пытается внести неверную сумму (скажем, -100) на ваш банковский счет, манипулируя кодом.
Теперь вопрос – Это возможно? Давайте разберемся. Обычно переменная в классе устанавливается как «частная», как показано ниже. Доступ к ней возможен только с помощью методов, определенных в классе. Никакой другой класс или объект не может получить к ним доступ.
Если член данных является закрытым, это означает, что к нему можно получить доступ только внутри того же класса. Ни один внешний класс не может получить доступ к закрытому члену данных или переменной другого класса. Так что в нашем случае хакер не может внести сумму -100 на ваш счет.
Подход 2: Первый подход хакера не позволил внести сумму. Далее он пытается внести сумму -100, используя метод «deposit».
Но реализация метода имеет проверку на отрицательные значения. Таким образом, второй подход также терпит неудачу.
Таким образом, вы никогда не раскрываете свои данные третьей стороне. Что делает ваше приложение безопасным.
Весь код можно представить как капсулу, и общаться можно только посредством сообщений. Отсюда и название инкапсуляция.
Данные скрываются в Java
Данные скрываются в Java скрывает переменные класса от других классов. Доступ к нему возможен только через метод их текущего класса. Он скрывает детали реализации от пользователей. Но больше, чем скрытие данных, он предназначен для лучшего управления или группировки связанных данных. Чтобы достичь меньшей степени инкапсуляции в Java, вы можете использовать модификаторы вроде «защищенный» или «публичный». Благодаря инкапсуляции разработчики могут легко изменять одну часть кода, не затрагивая другие.
Геттер и сеттер в Java
Геттер и сеттер в Java — это два традиционных метода, используемых для получения и обновления значений переменной. В основном они используются для создания, изменения, удаления и просмотра значений переменных. Метод установки используется для обновления значений, а метод получения — для чтения или получения значений. Они также известны как аксессор и мутатор.
Следующий код является примером методов получения и установки:
class Account{ private int account_number; private int account_balance; // getter method public int getBalance() { return this.account_balance; } // setter method public void setNumber(int num) { this.account_number = num; } }
В приведенном выше примере метод getBalance() — это метод получения, который считывает значение переменной account_balance, а метод setNumber() — это метод установки, который устанавливает или обновляет значение переменной account_number.
Абстракция против инкапсуляции
Часто инкапсуляцию неправильно понимают абстракция. Давай учиться-
- Инкапсуляция — это больше о том, «Как» достичь функциональности.
- Абстракция больше связана с тем, «что» может делать класс.
Простым примером для понимания этой разницы является мобильный телефон. Где сложная логика на плате инкапсулирована в сенсорный экран, а интерфейс предоставляется для ее абстрагирования.
Преимущества инкапсуляции в Java
- Инкапсуляция связывает данные с соответствующими функциями. Здесь функциональность означает «методы», а данные — «переменные».
- Поэтому мы храним переменные и методы в одном месте. Это место «классное». Класс является основой для инкапсуляции.
- Для пользователя Java Инкапсуляция: вы можете скрыть (ограничить доступ) критически важные элементы данных в вашем коде, что повышает безопасность.
- Как мы обсуждали ранее, если член данных объявлен «частным», то к нему можно получить доступ только внутри того же класса. Ни один внешний класс не может получить доступ к члену данных (переменной) другого класса.
- Однако, если вам нужен доступ к этим переменным, вам придется использовать публичный «геттер» и «сеттер» методы.