Рубрики
Без рубрики

Модификаторы доступа в Java

Введение Представьте, что вы загружаете пакет программного обеспечения в свой проект для последующей интеграции… С тегом java, модификатор доступа, программирование.

Вступление

Представьте, что вы загружаете программный пакет в свой проект для интеграции, а затем решаете использовать его внутри своей программы, проверяя наличие классов внутри этого пакета, бум! Прежде чем вы перейдете в класс 1200 и вам понадобится максимум от 5 до 10, вам придется начать поиск нескольких подходящих. Насколько неприятно? Это именно то, для чего существуют объектно-ориентированные языки программирования, такие как Java. Одним из мотивов для модификаторов доступа является принцип в информатике и информационной безопасности, известный как Принцип наименьших привилегий .

Принцип наименьших привилегий гласит, что коду следует предоставлять только тот объем привилегий и доступа, который ему необходим для выполнения назначенной задачи.

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

Модификаторов доступа в Java четыре, и только три из них имеют ключевые слова. Они являются

  • Модификатор общего доступа
  • Модификатор частного доступа
  • Модификатор защищенного доступа
  • Модификатор доступа по умолчанию
  • Общественный
public static String firstName;

Как следует из названия, public делает доступными члены (поля экземпляра и методы) класса для всех других классов в пакете, а также для объектов этого класса и даже подклассов. Модификатор общего доступа в основном используется, когда мы хотим сделать поле экземпляра или методы доступными для всех объектов класса или доступными из других классов в том же пакете или вне его (при импорте).

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

Совет : Если класс должен иметь общедоступные данные, сделайте его окончательным, чтобы избежать изменений.

  • Частный
private double salesAmount;

В отличие от public, private предоставляет переменной или полю ограниченный доступ к самим полям или методам. Объявление поля или метода закрытым означает, что этот метод или поле доступны только членам этого конкретного класса. Это означает, что другие классы в том же пакете или объекты класса или даже подклассы не имеют доступа к этим методам. Основная причина этого заключается в предотвращении несанкционированного доступа или изменения переменной экземпляра. Это делается для выполнения одной из важных концепций OOPs, известной как Инкапсуляция или Скрытие данных. Решение для частных переменных экземпляра состоит в том, чтобы создать соответствующие общедоступные методы get и set и контролировать их доступ к этим полям экземпляра, а также проверять данные, которые будут храниться в поле. Это одно из основных применений методов get и set.

Совет : Желательно всегда использовать частные поля в вашем классе и использовать методы get и set для доступа к ним, потому что это хорошая практика разработки программного обеспечения.

  • Защищенный
protected final static int age;

Protected устраняет разрыв между публичными и частными членами класса. Он обеспечивает промежуточный уровень защиты между общедоступным и частным доступом. Это позволяет получить доступ к члену членам этого класса, членам его подкласса, а также членам других классов в том же пакете (protected имеет доступ к пакету). Основное различие между защищенными и общедоступными членами заключается в том, что к общедоступным членам можно получить доступ из любого места пакета или даже из других пакетов (при импорте), но protected недоступен для членов других пакетов за пределами его текущего пакета.

Одним из недостатков использования модификатора защищенного доступа является то, что члены подкласса могут легко изменять переменные без использования методов set, в которых злоумышленники могут воспользоваться этим, чтобы изменить переменные, приводящие к несогласованному поведению в классе. Если реализация класса должна была измениться в следующий раз, это означает, что все остальные подклассы, наследующие от этого класса, должны быть изменены в соответствии с этим изменением, например, изменение переменной экземпляра с LastName на фамилию, это означает, что все остальные подклассы, использующие FirstName, должны быть изменены на фамилию, что является не очень хорошая практика. Другим недостатком является то, что защищенные элементы видны всем другим классам в том же пакете, что может быть нежелательно для некоторых проблем.

Использование: Так же, как общедоступный и частный, защищенный используется аналогично.

  • По умолчанию
static String dateOfBirth;

Когда поля или методы класса объявляются без модификатора доступа, в этом случае предполагается |/модификатор доступа по умолчанию . Java использует это поле или метод в качестве модификатора доступа по умолчанию, поэтому доступ к этому полю или методу ограничен. С помощью модификатора доступа по умолчанию другие члены класса и классы в том же пакете могут иметь к нему доступ. Но классы из других пакетов не имеют к нему доступа.

  • Краткое описание Ниже приведено изображение из Wikimedia обобщение различий между модификаторами доступа в Java.

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

Оригинал: “https://dev.to/princeibs/access-modifiers-in-java-4loh”