logo

بهترین ها همه در یک جا

مطالب آموزشی

Access Modifiers

اشتراک گذاری :

در زبان برنامه‌نویسی C#، دسترسی به اعضای یک کلاس (مانند متغیرها، متدها و خواص) با استفاده از Access Modifiers (محدودکننده‌های دسترسی) کنترل می‌شود. سه مورد اصلی از این محدودکننده‌ها عبارتند از: public، private و protected. در ادامه توضیح دقیق هر یک از این مفاهیم آورده شده است:


1. Public

  • تعریف : وقتی یک عضو (متغیر، متد، خاصیت و ...) به صورت public تعریف می‌شود، به این معناست که آن عضو قابل دسترسی از هر نقطه‌ای در برنامه است.
  • دسترسی :
    • از داخل کلاس خودش
    • از کلاس‌های دیگر (حتی اگر در فضای نام یا اسمبلی متفاوتی باشند)
    • از طریق اشیاء کلاس نیز قابل دسترسی است.
public class MyClass
{
    public int MyPublicField = 10;
}
class Program
{
    static void Main()
    {
        MyClass obj = new MyClass();
        Console.WriteLine(obj.MyPublicField);
    }
}

2. Private

  • تعریف : وقتی یک عضو به صورت private تعریف می‌شود، به این معناست که تنها در داخل همان کلاس قابل دسترسی است.
  • دسترسی :
    • فقط از داخل کلاس خودش قابل دسترسی است.
    • از کلاس‌های دیگر (حتی اگر زیرکلاس باشند) و از طریق اشیاء کلاس قابل دسترسی نیست.
public class MyClass
{
    private int MyPrivateField = 20;

    public void PrintPrivateField()
    {
        Console.WriteLine(MyPrivateField);
    }
}

class Program
{
    static void Main()
    {
        MyClass obj = new MyClass();
        Console.WriteLine(obj.MyPrivateField);
        obj.PrintPrivateField();
    }
}

3. Protected

  • تعریف : وقتی یک عضو به صورت protected تعریف می‌شود، به این معناست که تنها در داخل کلاس خودش و در کلاس‌های مشتق‌شده (زیرکلاس‌ها) قابل دسترسی است.
  • دسترسی :
    • از داخل کلاس خودش
    • از داخل کلاس‌های زیرکلاس (Derived Classes)
    • از طریق اشیاء کلاس قابل دسترسی نیست.
public class BaseClass
{
    protected int MyProtectedField = 30;
}

public class DerivedClass : BaseClass
{
    public void PrintProtectedField()
    {
        Console.WriteLine(MyProtectedField);
    }
}

class Program
{
    static void Main()
    {
        BaseClass obj = new BaseClass();
        // Console.WriteLine(obj.MyProtectedField);

        DerivedClass derivedObj = new DerivedClass();
        derivedObj.PrintProtectedField();
    }
}

جدول مقایسه‌ای

Modifierدسترسی داخل کلاسدسترسی کلاس های دیگردسترسی زیر کلاس هادسترسی اشیا
public
private
protected

نکات مهم

  1. پیش‌فرض : اگر هیچ محدودکننده دسترسی مشخصی برای یک عضو تعریف نشود، دسترسی به آن به صورت پیش‌فرض private است.
  2. استفاده مناسب :
    • از private برای پنهان کردن جزئیات پیاده‌سازی و حفظ Encapsulation استفاده کنید.
    • از protected برای اعضایی که باید در زیرکلاس‌ها قابل دسترسی باشند استفاده کنید.
    • از public برای اعضایی که باید در سراسر برنامه قابل دسترسی باشند استفاده کنید.

نتیجه‌گیری

انتخاب بین public، private و protected به نوع طراحی کلاس و نیازهای برنامه بستگی دارد. استفاده صحیح از این محدودکننده‌ها به شما کمک می‌کند تا کدی با ساختاری تمیز، قابل نگهداری و امن بنویسید.

پاسخ نهایی :

  • public: قابل دسترسی از همه نقاط
  • private: فقط در داخل کلاس قابل دسترسی
  • protected: در داخل کلاس و زیرکلاس‌ها قابل دسترسی



برنامه نویسی آموزش
avatar

برنامه نویس و توسعه دهنده ارشد وب
کارشناس ارشد مدیریت فناوری اطلاعات