C# Модифікатори доступу
Модифікатори доступу
Наразі ви добре знайомі з ключовим словом public
, яке зустрічається в багатьох наших прикладах:
public string color;
Ключове слово public
є модифікатором доступу, який використовується для встановлення рівня доступу/видимості для класів, полів, методів і властивостей.
C# має такі модифікатори доступу:
Модифікатор | Опис |
---|---|
public |
Код доступний для всіх класів |
private |
Код доступний лише в межах одного класу |
protected |
Код доступний у тому самому класі або в класі, успадкованому від цього класу. Ви дізнаєтеся більше про наслідування в наступному розділі |
internal |
Код доступний лише всередині власної збірки, але не з іншої збірки. Ви дізнаєтеся більше про це в наступному розділі |
Є також дві комбінації: protected internal
і private protected
.
Поки що зосередимося на модифікаторах public
та private
.
Приватний модифікатор
Якщо ви оголошуєте поле з модифікатором доступу private
, до нього можна буде отримати доступ лише в тому самому класі:
Приклад
class Car
{private string model = "Mustang"; static void Main(string[] args)
{Car myObj = new Car(); Console.WriteLine(myObj.model);
}}
Виведення буде:
Mustang
Якщо ви спробуєте отримати до нього доступ поза класом, виникне помилка:
Приклад
class Car
{
private string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
Виведення буде:
'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used
Публічний модифікатор
Якщо ви оголосите поле з модифікатором доступу public
, воно стане доступним для всіх класів:
Приклад
class Car
{
public string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
Виведення буде:
Mustang
Чому модифікатори доступу?
Контролювати видимість членів класу (рівень безпеки кожного окремого класу та члена класу).
Щоб досягти «Інкапсуляції» — процесу, який забезпечує приховування «конфіденційних» даних від користувачів. Це робиться шляхом оголошення полів як private
. Про це ви дізнаєтеся більше в наступному розділі.
Примітка: За умовчанням усі члени класу є privat
, якщо ви не вказали модифікатор доступу:
Приклад
class Car
{
string model; // private
string year; // private
}