Что такое модификаторы доступа

Модификаторы доступа Java – Public, Private, Protected

Во время работы с Java встречаются public, protected and private – это модификаторы доступа. Модификатор доступа в Java(Access Modifiers) ограничивает доступ к классу, конструктору, данным и методам в другом классе. Есть четыре типа:

Что такое модификаторы доступа. Смотреть фото Что такое модификаторы доступа. Смотреть картинку Что такое модификаторы доступа. Картинка про Что такое модификаторы доступа. Фото Что такое модификаторы доступа

Модификатор доступа по умолчанию

Если не упоминается какой-либо модификатор доступа, он называется модификатором доступа по умолчанию. Область применения ограничена только пакетом.

Это означает, что если у нас есть класс в пакете, то только те классы, которые находятся в этом пакете, могут обращаться к этому классу.

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

Пример модификатора доступа по умолчанию в Java

В этом примере у нас есть два класса, класс Test пытается получить доступ к методу по умолчанию класса Addition, поскольку класс Test принадлежит другому пакету, эта программа выдаст ошибку компиляции, поскольку область действия модификатора по умолчанию ограничена одним и тем же пакетом в котором он объявлен.

Вывод:
Exception in thread «main» java.lang.Error: Unresolved compilation problem:
The method addTwoNumbers(int, int) from the type Addition is not visible
at xyzpackage.Test.main(Test.java:12)

Что такое модификаторы доступа. Смотреть фото Что такое модификаторы доступа. Смотреть картинку Что такое модификаторы доступа. Картинка про Что такое модификаторы доступа. Фото Что такое модификаторы доступа чем отличаются модификаторы доступа

Модификатор личного(private) доступа

Область применения модификатора private ограничена только классом.

Пример использования private

В этом примере выдается ошибка компиляции, поскольку мы пытаемся получить доступ к частному члену данных и методу класса ABC в классе Example. Элемент данных и метод private доступны только внутри класса.

Protected – защищенный доступ

Элемент данных и метод protected доступны только классам одного и того же пакета и подклассам, присутствующим в любом пакете. Также можно сказать, что модификатор защищенного доступа похож на модификатор доступа по умолчанию, за одним исключением, что он имеет видимость в подклассах.

Классы не могут быть объявлены protected. Этот модификатор обычно используется в родительских дочерних отношениях.

Пример protected

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

Public – публичный доступ

Члены, методы и классы, которые объявлены как public, могут быть доступны из любого места. Этот модификатор не накладывает никаких ограничений на доступ.

Пример применения public

Давайте возьмем тот же пример, который мы видели выше, но на этот раз метод addTwoNumbers() имеет public модификатор, и класс Test может получить доступ к этому методу, даже не расширяя класс Addition.

Это потому, что публичный модификатор виден везде.
Addition.java

Средняя оценка / 5. Количество голосов:

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Источник

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

Поскольку сокрытие является одним из основных принципов структурного и объектно-ориентированного проектирования, при создании программ принято скрывать как можно больше информации об объектах. Это необходимо не только для предотвращения случайного изменения, но и для повышения слабого зацепления (low coupling). Для этих целей TypeScript реализует механизм называемый модификаторы доступа (Access Modifiers).

Модификаторы доступа — это ключевые слова с помощью которых осуществляется управление сокрытием данных в классе. Простыми словами, модификаторы доступа задают уровень доступности членам класса ограничивая область их видимости.

С помощью модификаторов доступа можно указать уровень доступа для полей, аксессоров и методов, в том числе статических. Кроме того, в TypeScript при помощи модификаторов доступа можно ограничивать доступ к конструктору класса.

Модификатор доступа public¶

Члены помеченные ключевым словом public доступны в определяющих их классах, их потомках, а также к ним можно обращаться через экземпляр или в случаи статических членов, через ссылку на класс.

Если при разработке приложения особое внимание уделяется архитектуре, то, как правило, модификатором доступа public помечаются только члены описанные в интерфейсе (глава Interface).

Члены, у которых отсутствует указание какого-либо модификатора доступа, воспринимаются компилятором как public :

Модификатор доступа private¶

Модификатор доступа protected¶

Модификаторы доступа и конструкторы класса¶

Кроме того, класс у которого конструктор объявлен с модификатором доступа private нельзя расширять ( extends ).

Тем не менее есть один нюанс. Не получится создать экземпляр подкласса, если он не переопределил конструктор суперкласса.

Быстрое объявление полей¶

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

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

Сокращенный способ инициализации полей класса:

При этом не существует строго заданного порядка, в котором должны объявляться параметры и сокращенное объявление полей.

Полям объявленным в конструкторе, также, как и полям, объявленным в теле класса, можно устанавливать различные модификаторы доступа.

Обращение к полям объявленным прямо в конструкторе ничем не отличается от обращения к полям, объявленным в теле класса.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *