Разница между спецификатором доступа и модификатором доступа - PullRequest
5 голосов
/ 17 февраля 2011

Я читал в интернете и слышал, как люди говорят

Спецификаторы доступа ::

Спецификатор доступа определяет, насколько доступно поле для кодирования в другихклассы.Доступ варьируется от полностью доступного до полностью недоступного.При желании вы можете объявить поле с ключевым словом спецификатора доступа: public, private или protected.

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

При желании вы можете объявить поле с ключевым словом модификатора: final или volatile и/ или статические и / или переходные, абстрактные и т. д.

Есть ли вообще разница?Потому что большинство определений для модификаторов доступа и спецификаторов доступа указывают на одно и то же ... что кажется таким неоднозначным.

Ответы [ 5 ]

6 голосов
/ 17 февраля 2011

В этом контексте вы можете думать о спецификаторах доступа как спецификаторах защиты - они указывают, откуда переменная может быть доступна.Напротив, модификаторы доступа совершенно разные;они определяют как (* не следует) обращаться к переменным;например, только для чтения, volatile и т. д.

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

Однако я немного удивлен, что терминология относится к C #, поскольку Microsoft фактически вызывает public и private " модификаторы доступа ", и она вызывает volatile и readonly просто "модификаторы * ".

2 голосов
/ 17 февраля 2011

См. Документ MSDN C # 4.0, я думаю, вы что-то не так поняли. В C # нет такого слова, как «спецификатор доступа», но он вызывает модификаторы или модификаторы доступа для модификаторов, которые используются для управления уровнем доступа.

Надеюсь, эта помощь.

Обновление

Я думаю, этот вопрос, как вы задаете мне, в чем разница между пакетом и пространством имен. Это зависит от того, на каком языке или профессоре вы используете или верите. В этом вопросе нет ничего плохого.

Исходя из опыта (и значения слов), модификатор доступа должен означать управление доступом как публичным, так и приватным. С другой стороны, спецификаторы доступа должны быть суперклассом модификатора доступа, что означает, что он включает в себя другое ключевое слово, например static, final, readonly или что-то подобное.

PS. И C #, VB.NET и Java, они используют модификатор доступа для ключевых слов, таких как public или private. С другой стороны, C ++ использует спецификатор доступа для того же ключевого слова.

Модификаторы (C # 4.0)

Уровни доступа в Visual Basic (VB.NET 2010)

Управление доступом к членам класса (Java)

Спецификаторы доступа (C ++ 2010)

2 голосов
/ 17 февраля 2011

Насколько я понимаю, между терминами нет никакой разницы. Например, документация MS C ++ использует оба термина для одной и той же вещи.

1 голос
/ 17 февраля 2011

Я полагаю, что спецификатор доступа определяет видимость для определенного поля / метода.

Модификатор доступа расскажет вам больше о поведении и использовании этого поля. Вы можете сказать, требуется ли для поля экземпляр объекта или его можно переопределить.

0 голосов
/ 08 ноября 2017

Спецификаторы доступа к классу указывают, какие другие переменные класса могут иметь доступ в данном классе.Модификаторы доступа класса указывают на ту же функциональность спецификаторов доступа

...