PDA

View Full Version : توابعی که به صورت protected برای اشیاء تعریف شده(؟)



hosseinam1370
شنبه 30 خرداد 1394, 15:44 عصر
دوستان اگه msdn رو داشته باشید ، و بخواهید که توابع و خواص و اونت مربوط به شئ رو ببینید ، مشاهده میکنید که یک شئ توابع و خواص و اونت های زیادی داره ، و براش تعریف شده،
که میتونید از بین این همه لیست های توابع ، اون دستوراتی که خودتون نیاز دارید رو ازش استفاده کنید.خوب حالا سوال من اینه که بعضی از توابع به صورت protected برای یک شئ تعریف شده، و ما در برنامه خودمون نمیتونیم ازش استفاده کنیم.برای مثال تابع OnMouseClick برای شئ button به صورت protected تعریف شده ،
حالا سوال من اینه که من از کجا میتونم دسترسیشو به public تغییر بدم؟
و از این توابع در کجاها میشه استفاده کرد؟
در عکس زیر شما میتونید لیستی از این توابع محافظت شده رو ببینید:
132436

با تشکر.

alireza264
شنبه 30 خرداد 1394, 16:53 عصر
سلام
عضوی از کلاس که به‌صورت protected تعریف بشه ،اون عضو در واقع با یک استثنا، private است و این استثنا زمانی است که از اون عضو protected، ارث‌بری بشه. در این حالت یک عضو protected در base class تبدیل به یک عضو protected در یک derived class می‌شود و این روند همین‌طور ادامه خواهد یافت.
اعضای protected فقط در سلسله‌مراتب ارث‌بری قابل دسترسی هستند و خارج از این سلسله‌مراتب، private هستند. بنا براین با استفاده از protected می‌تونید اعضایی تعریف کنید که private هستند اما می‌شه ازشون در ارث‌بری استفاده کرد.


class A
{
protected int ID { get; set; }
protected int Number { get; set; }
}
class B : A
{
protected string Name;

public B(int id, int number, string name)
{
ID = id;
Number = number;
Name = name;
}

}

hosseinam1370
شنبه 30 خرداد 1394, 18:54 عصر
پس با این توضیحات شما ، من اگه از کلاس button به ارث ببرم ، میتونم از این توابع استفاده کنیم ، ولی در غیر این صورت در دسترس نخواهد بود ، درسته؟
یعنی من نمیتونم به طور مستقیم در پروژه های دیگه استفاده کنم!!!



با تشکر.

RmeXXXXXXXXX
شنبه 30 خرداد 1394, 21:20 عصر
خیر! متدهای محافظت شده فقط در سلسله مراتب قابل دسترسی هستند. اگر بخواهید بصورت عمومی فراخوانیشون کنید (که منطق درستی هم نیست) باید یک متد عمومی تعریف کنید و داخلش متدهای با دسترسی کمتر رو فراخوانی کنید.
معمولا متدهای (و خاصیتها) یی که بصورت محافظت شده هستند مجازی نیست هستند virtual تا فرزندان بتونن رفتار خودشونو تعریف کنند.