سطح دسترسی (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}