Access Modifier (Модификатор доступа) в C#
1. Modifier в CSharp
access modifiers в CSharp определяют доступность (Рамки) в данные полей, методов, конструктора (constructor) или класса.
Существует 5 видов access modifiers в CSharp:
- private
- protected
- internal
- protected internal
- public
2. Обзор access modifier
Модификатор (Modifier) | Описание |
private | Доступ ограничен в рамках определения Класса. Это вид модификатора доступа по умолчанию, если нет определенного формального вида |
protected | Доступ ограничен в рамках определения Класса и любого подкласса унаследованного из этого класса. |
internal | Доступ ограничен в рамках определения Assembly текущего проекта. |
protected internal | Доступ ограничен в рамках определения текущего Assembly и определенном классе или подклассах. |
public | Не имеет ограницений при доступе в публичных членов (public) |
Таблица изображенная ниже дает вам обзор про способ использования access modifier.
С Assembly | Отличается от Assembly | ||||
В определенном классе? | В подклассе | Вне определенного класса, вне подкласса | В подклассе | Вне подкласса | |
private | Y | ||||
protected | Y | Y | Y | ||
internal | Y | Y | Y | ||
protected internal | Y | Y | Y | ||
public | Y | Y | Y | Y | Y |
Вы можете понять более детально по примерам ниже:
3. private access modifier
private access modifier только позволяет доступ внутри класса.
Вы не можете получить доступ в члены private вне определенного класса того члена. CSharp оповестит ошибку во время компилирования класса.
4. private constructor
Метод конструктора (constructor), метод (method), поле (field) называются членами в классе.
Если вы создаете класс, и имеет конструктор (constructor) имеет access modifier являющийся private, вы не можете создать объект данного класса из того private constructor инаружи данного класса. Посмотрим изображенный пример:
5. protected access modifier
protected access modifier может иметь доступ внутри package, или снаружи package но должно быть через наследование.
protected access modifier только применяется для field, method и constructor. Он не может быть применен для класса (class, interface, ..).
6. internal access modifier
internal это внутренний модфикатор доступа, который ограничивается Assembly.
Assembly это компилированный продукт вашего кода, обычно это DLL, но EXE так же можно считать assembly. Это самая маленькая единица развертывания любого проекта .NET.
Assembly обычно содержит код .NET по MSIL (Microsoft Intermediate language - Промежуточный язык) который будет компилирован в машинный код (Native code) ("JITted" - Компилирован с помощью Just-In-Time) в первый раз при выполнении на компьютере. Это компилированный код так же будет сохранен в Assembly и переиспользован для следующих вызовов.
7. protected internal access modifier
Модификатор доступа protected internal это комбинация двух модификаторов доступа protected и internal, когда член класса имеет данный модификатор доступа, вы можете только иметь доступ к тому члену класса который определил его или к подклассам одного Assembly.
8. public access modifier
public access modifier это самый сильный и может иметь доступ везде. Имеет самые широкие рамки доступа по сравнению с другими modifier.
9. Модификатор доступа и наследственность
В CSharp вы можете переопределить (override) метод (method) родительского класса методом c одинаковым именем и параметром, и видом возврата подкласса, но вам не позволено менять его модификатор доступа (access modifier).
Но вы можете создать метод с одинаковым именем, параметром, видом возврата, но другим модификатором доступа, если использовать ключевое словом new, на самом деле это другой метод не связанный с методом родительского класса.
Различие между override и new объяснены в статье "Наследственность и полиморфизм в CSharp" вы можете посмотреть по ссылке:
Pуководства C#
- Наследование и полиморфизм в C#
- Что мне нужно для начала работы с C#?
- Быстрый обучение C# для начинающих
- Установите Visual Studio 2013 в Windows
- Абстрактный класс и Interface в C#
- Установите Visual Studio 2015 в Windows
- Сжатие и декомпрессия в C#
- Руководство по программированию многопоточности C#
- Руководство C# Delegate и Event
- Установите AnkhSVN в Windows
- Программирование C# для группы использующей Visual Studio и SVN
- Установить .Net Framework
- Access Modifier (Модификатор доступа) в C#
- Руководство C# String и StringBuilder
- Руководство C# Property
- Руководство C# Enum
- Руководство C# Structure
- Руководство C# Generics
- Обработка исключений для C#
- Руководство C# Date Time
- Манипулирование файлами и каталогами в C#
- Руководство CSharp Streams - двоичные потоки в C#
- Руководство Регулярное выражение C#
- Подключиться к базе данных SQL Server в C#
- Работа с базой данных SQL Server на C#
- Подключиться к базе данных MySQL в C#
- Работа с базой данных MySQL на C#
- Подключиться к базе данных Oracle в C# без Oracle Client
- Работа с базой данных Oracle на C#
Show More