دسته بندی ها
12:06 1403/07/13

تفاوت بین public، private و protected در کلاس ها در C# چیست

مشخصات سوال کننده :
کاربر : moein     امتیاز کاربر : 92     رتبه کاربر : 14
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1244
هوش مصنوعی

پاسخ هوش مصنوعی

در زبان C#، دسترسی به اعضای یک کلاس (مانند متدها و پروپرتی ها) می تواند با استفاده از مشخص کننده های دسترسی تعیین شود. در اینجا تفاوت بین public، private و protected را توضیح می دهیم:

  • public: اعضای public در هر جایی که کلاس در آن قابل دسترسی است، قابل استفاده هستند. این بدان معناست که هر کلاسی می تواند به این اعضا دسترسی پیدا کند.
  • private: اعضای private تنها در داخل کلاسی که تعریف شده اند قابل دسترسی هستند. این اعضا از دسترسی خارج از کلاس محفوظ هستند.
  • protected: اعضای protected در کلاس خود و همچنین در کلاس های فرزند (کلاس هایی که از آن وراثت می برند) قابل دسترسی هستند. این نوع دسترسی به شما این امکان را می دهد که اعضای کلاس را برای وراثت محدود کنید.

در مورد تفاوت بین توابع static و public:

  • static: توابع static متعلق به کلاس هستند و نیازی به ایجاد یک نمونه (object) از کلاس ندارند. این توابع می توانند هر نوع داده ای را دستکاری کنند، اما دسترسی به اعضای غیر static (مانند public و private) ندارند.
  • public: توابع public می توانند به سندان عمومی دسترسی داشته باشند، اما برای دسترسی به اعضای غیر static، شما باید یک نمونه از کلاس ایجاد کنید.

بنابراین، زمانی که شما یک پروپرتی public را در یک کلاس تعریف می کنید، نمی توانید از آن در یک تابع static استفاده کنید مگر اینکه یک نمونه از کلاس ایجاد کنید.

این موارد برای کلاس ها نیز صدق می کند. به بیان دیگر، اگر کلاس های A و B وجود داشته باشند و کلاس B از کلاس A ارث بری کند، اعضای protected کلاس A در کلاس B قابل دسترسی خواهند بود، اما اعضای private نه.

در نهایت، تفاوت بین private و protected این است که members private تنها در کلاس خود قابل دسترسی هستند، در حالی که members protected علاوه بر کلاس خود، در کلاس های فرزند نیز قابل دسترسی هستند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Radman 14:47 1403/07/14

با درود 

برای پراپرتی ها ما Access Modifier داریم یعنی سطح دسترسی

انواع سطوح دسترسی پراپرتی ها (Properties)

  • internal
  • public
  • private
  • protected

به طور پیش فرض اگه پراپرتی سطح دسترسی مشخص نشه private در نظر گرفته میشه.

Public : سطح دسترسی در کل پروژه

Private : سطح دسترسی در سطح کلاس

Protected : فقط در کلاس هایی که از این کلاس ارث بری میکنند امکان دسترسی وجود داره.

کلاس ها :

کلاس ها هم سطح دسترسی دارند :

  • public
  • private
  • protected
  • internal   

پیش فرض اگه برای کلاس تعریف نشه internal در نطر گرفته میشه .

public : در سطح کل پروژه کلاس قابل استفاده می باشد.

private : کلاس رو نمیشه پرایوت کرد

internal : در سطح همون پروژه

protected : در کلاس هایی که از این کلاس ارث بری میکنند قابل استفاده میباشد

نوع کلاس  static یا غیر static 

کلاسی که استاتیک تعریف بشه دیگه نیازی به نمونه سازی نداره و مستقیم میتوان از این کلاس استفاده کرد و برای مثال شما مثلا برای ثبت آدرس سایت و آدرس  و ... میتوانید از کلاس استاتیک استفاده کنید -برای درک واضح تر شما کلاس مدرسه رو در نظر بگیرید یک تخته سیاه وجود داره برای همه افراد اون کلاس و به ازای هر دانش آموز بهشون تخته سیاه نمیدن برای این مثال تخته سیاه رو میتوان کلاس استاتیک در نظر گرفت.

ولی اگه بخوان آب معدنی به شاگردان تعلق بگیره نیاز هست که کلاس غیر استاتیک تعریف بشه چون به ازای هر دانش آموز یک آب معدنی وجود داره 

سعی کردم با زبون ساده بنویسم که قابل درک بشه 

امیدوارم تونسته باشم منظور رو برسونم.

ویرایش شده در شنبه 14 مهر 1403 ساعت 19:11:52
به این پاسخ امتیاز بدهید    3
امتیاز: 169 رتبه: 9
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود