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

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

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

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

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

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

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

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

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

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

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

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

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

Данные скрываются в 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 Инкапсуляция: вы можете скрыть (ограничить доступ) критически важные элементы данных в вашем коде, что повышает безопасность.
  • Как мы обсуждали ранее, если член данных объявлен «частным», то к нему можно получить доступ только внутри того же класса. Ни один внешний класс не может получить доступ к члену данных (переменной) другого класса.
  • Однако, если вам нужен доступ к этим переменным, вам придется использовать публичный «геттер» и «сеттер» методы.