شی گرائی (بخش هجدهم)
در پست قبلی دربارۀ سطح دسترسی public , private توضیح دادم ، در این بخش دربارۀ دو سطح دسترسی دیگه یعنی (protected و internal) صحبت خواهم کرد.
سطح دسترسی protected به این معنی که فقط خود کلاس شامل و فیلدهاش protected هستن و کلاس و نوع هایی که از همون کلاس یا نوعی که شامل عضو protected هستند به ارث رفته باشه قابل دسترس هستن.
خب یکم شفاف تر توضیح میدم، فقط در کلاسی که در آن تعریف شده و کلاسهایی که از همون کلاس مشتق می شوند قابل دسترسی خواهند بود واعضای نوع Protected می تونن فقط توسط اعضای داخل کلاس مورد نظر و یا انواع و اعضای مشتق شده از همون کلاس مورد دسترسی قرار بگیرند.
کد زیر برای فهم این سطح (Protected) با توضیحاتی که دادم خدمتتون مناسبه دقت کنید :
کد PHP:
using System;
class A
{
protected int _a;
private int _b;
}
class B : A
{
public B()
{
Console.WriteLine(this._a);
}
}
class Program
{
static void Main()
{
B b = new B();
}
}
حالا اگه ما این سطح دسترسی رو در پروژمون internal تعریف کنیم ، فقط متد در همون فضای نامی که کلاس تعریف شده قابل شناساییه، و این برای زمانی که ما هدفمون ایجاد مثلا یه dll هست که اونم باید حتما در نظر داشته باشیم
چون dll رو در یک پروژه تعریف می کنیم ولی در جاهای مختلفی از برنامه ها قصد استفاده داریم از اون فایل.
از نوع Internal هنگامی استفاده می کنیم که کتابخانه کلاس جدایی ساخته باشیم و نخوایم هیچ کدی از خارج این کتابخانه به کدهامون دسترسی داشته باشه.
مثالی برای سطح internal :
کد PHP:
class Program
{
static void Main()
{
Test test = new Test();
test._a = 1;
}
}
internal class Test
{
public int _a;
}