سطح دسترسی (Access Modifiers)
تاکنون ، شما با کلمه کلیدی public که در بسیاری از مثالهای ما وجود دارد کاملاً آشنا شدید:
public string color;
کلید واژه public یک سطح دسترسی است ، که برای تنظیم سطح دسترسی برای کلاس ها ، فیلدها، متدها و خصوصیات استفاده می شود.
سی شارپ دارای Access Modifier های زیر است:
Modifier | Description |
---|---|
public | کد برای همه کلاسها قابل دسترسی است |
private | کد فقط در همان کلاس قابل دسترسی است |
protected | این کد در همان کلاس یا در کلاسی قابل دسترسی است که از آن کلاس به ارث رسیده است. در درس بعدی اطلاعات بیشتری در مورد ارث کسب خواهید کرد |
internal | در این حالت عنصر فقط درون پروژه جاری قابل دسترسی است |
همچنین دو ترکیب وجود دارد: محافظت شده داخلی (protected internal) و خصوصی محافظت شده (private protected).
دسترسی Private
اگر فیلدی را با سطح دسترسی private اعلام کنید ، فقط در همان کلاس قابل دسترسی است:
class Car
{
private string model = "Mustang";
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
اگر سعی کنید خارج از کلاس به آن دسترسی پیدا کنید ، خطایی رخ می دهد:
class Car
{
private string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
دسترسی Public
اگر فیلدی را با سطح دسترسی public اعلام کنید ، برای همه کلاسها قابل دسترسی است:
class Car
{
public string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
چرا Access Modifiers؟
برای کنترل قابلیت مشاهده اعضای کلاس (سطح امنیتی هر کلاس و اعضای کلاس).
برای دستیابی به "Encapsulation" این فرایند اطمینان از پنهان بودن اطلاعات "حساس" از سوی کاربران است. این کار با اعلام خصوصیات فیلدها انجام می شود.
توجه: به طور پیش فرض ، همه اعضای یک کلاس خصوصی هستند اگر سطح دسترسی را تعیین نکنید:
class Car
{
string model; // private
string year; // private
}