logo
Лекции по ая

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

Каждое поле имеет модификатор доступа, принимающий одно из четырех значений: public, private, protected, internal.

Модификатор private является атрибутом доступа по умолчанию. Он закрывает поля от всех других классов, разрешая прямой доступ к ним (чтение и запись) только методам самого класса. Все поля всегда доступны всем методам класса. Они являются для методов класса глобальной информацией, с которой работают все методы класса, извлекая из полей нужные им данные и изменяя их значения в ходе работы.

Модификатор protected. Этот модификатор открывает поля классам наследникам. Если класс A объявил некоторое поле с модификатором protected, то методы класса B, который является наследником класса A и, следовательно, наследует поля класса A, могут непосредственно работать с наследуемыми полями.

Модификатор internal. Этот модификатор открывает поля из одного проэкта. Если класс A объявил некоторое поле с модификатором internal, то методы класса B из этого же проекта, являющегося клиентом класса A, могут непосредственно работать с таким полем.

Комбинация атрибутов protected и internal

Эта комбинация открывает поле тем классам, которые являются либо наследниками, либо классами из одного проэкта.

Если поля доступны только для методов класса, то они имеют модификатор доступа private, который можно опускать. Такие поля считаются закрытыми, но часто желательно, чтобы некоторые из них были доступны в более широком контексте. Если некоторые поля класса A должны быть доступны для методов класса B, являющегося потомком класса A, то эти поля следует снабдить модификатором protected. Такие поля называются защищенными. Если некоторые поля должны быть доступны для методов классов B1, B2 из одного проекта с классом А, то эти поля следует снабдить модификатором internal, а все классы B поместить в один проект ( assembly ). Такие поля называются дружественными. Наконец, если некоторые поля должны быть доступны для методов любого класса B, которому доступен сам класс A, то эти поля следует снабдить модификатором public. Такие поля называются общедоступными или открытыми.

Модификатор

Определение

public

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

private

Доступ к типу или члену можно получить только из кода в том же классе.

protected

Доступ к типу или члену можно получить только из кода в том же классе или в производном классе.

internal

Доступ к типу или члену возможен из любого кода в той же сборке, но не из другой сборки.

protected

internal

Доступ к типу или члену возможен из любого кода в той же сборке, или из производного класса в другой сборке.