Инкапсуляция в ООП Java с примером

Содержание:

Anonim

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

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

В этом руководстве вы узнаете:

  • Что такое инкапсуляция в 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} elseaccount_balance = account_balance + a;}}

Предположим, хакеру удалось получить доступ к коду вашего банковского счета. Теперь он пытается внести на ваш счет сумму -100 двумя способами. Посмотрим его первый метод или подход.

Подход 1: он пытается внести недопустимую сумму (скажем -100) на ваш банковский счет, манипулируя кодом.

Теперь вопрос: возможно ли это? Пусть разбираются.

Обычно переменная в классе устанавливается как «частная», как показано ниже. Доступ к нему можно получить только с помощью методов, определенных в классе. Никакой другой класс или объект не может получить к ним доступ.

Если член данных является частным, это означает, что к нему можно получить доступ только в том же классе. Никакой внешний класс не может получить доступ к частному элементу данных или переменной другого класса.

Так что в нашем случае хакер не может внести на ваш счет сумму -100.

Подход 2 : Первый подход хакера не сумел внести сумму. Затем он пытается сделать депозит на сумму -100, используя метод «депозита».

Но в реализации метода есть проверка на отрицательные значения. Так что и второй подход не работает.

Таким образом, вы никогда не раскрываете свои данные внешней стороне. Это делает ваше приложение безопасным.

Весь код можно представить себе как капсулу, и вы можете общаться только через сообщения. Отсюда и название инкапсуляция.

Скрытие данных в Java

Скрытие данных в Java скрывает переменные класса от других классов. Доступ к нему можно получить только через метод их текущего класса. Он скрывает детали реализации от пользователей. Но больше, чем скрытие данных, оно предназначено для лучшего управления или группировки связанных данных.

Чтобы добиться меньшей степени инкапсуляции в Java, вы можете использовать такие модификаторы, как «protected» или «public». Благодаря инкапсуляции разработчики могут легко изменять одну часть кода, не затрагивая другую.

Получатель и сеттер в Java

Getter и Setter в Java - это два обычных метода, используемых для получения и обновления значений переменной. В основном они используются для создания, изменения, удаления и просмотра значений переменных. Метод установки используется для обновления значений, а метод получения используется для чтения или получения значений. Они также известны как аксессоры и мутаторы.

Следующий код является примером методов получения и установки:

class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}

В приведенном выше примере метод getBalance () - это метод получения, который считывает значение переменной account_balance, а метод setNumber () - метод установки, который устанавливает или обновляет значение для переменной account_number.

Абстракция против инкапсуляции

Часто инкапсуляцию неправильно понимают с абстракцией. Давай учиться-

  • Инкапсуляция - это больше о том, "Как" достичь функциональности.
  • Абстракция - это больше о том, «что» может делать класс.

Простым примером для понимания этой разницы является мобильный телефон. Где сложная логика на печатной плате заключена в сенсорный экран, а интерфейс предназначен для ее абстрагирования.

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

  • Инкапсуляция связывает данные с соответствующими функциями. Здесь функциональные возможности означают «методы», а данные означают «переменные».
  • Таким образом, мы храним переменные и методы в одном месте. Это место «классное». Класс - это основа для инкапсуляции.
  • С помощью инкапсуляции Java вы можете скрыть (ограничить доступ) важные элементы данных в своем коде, что повышает безопасность.
  • Как мы обсуждали ранее, если член данных объявлен «частным», то к нему можно получить доступ только внутри того же класса. Никакой внешний класс не может получить доступ к элементу данных (переменной) другого класса.
  • Однако, если вам нужен доступ к этим переменным, вы должны использовать общедоступные методы получения и установки.