تفاوت متد Public با Protected و Private در کلاسها چیست؟
4 تیر 1403 1403-04-06 13:31تفاوت متد Public با Protected و Private در کلاسها چیست؟
تفاوت متد Public با Protected و Private در کلاسها چیست؟
در زبان برنامهنویسی C#، متدهای Public ،Protected و Private تفاوتهای زیادی در دسترسی و استفاده دارند. این تفاوتها نقش مهمی در کنترل دسترسی به اعضای یک کلاس دارند و از اصول اصلی برنامهنویسی شیءگرا (OOP) بهشمار میرود.
در ادامه، تفاوت متد Public با Protected و Private را بررسی میکنیم و هرکدام را بهطور کامل توضیح میدهیم.
تفاوت متد Public با Protected و Private
تفاوتهای متدهای Public با Protected و Private بهشرح زیر هستند:
Public:
متدهای Public برای همه قابل دسترسی هستند. این بدان معنا است که هر کد، چه در داخل کلاس و چه در خارج از آن، میتواند به متدهای Public دسترسی داشته باشد.
Protected:
متدهای Protected فقط در داخل کلاس و کلاسهای مشتقشده (فرزند) قابل دسترسی هستند. این محدودیت باعث میشود که دسترسی به این متدها از خارج از سلسلهمراتب کلاسها ممکن نباشد.
Private:
متدهای Private فقط در داخل همان کلاس قابل دسترسی هستند. این متدها برای مخفیسازی پیادهسازی داخلی کلاس و جلوگیری از دسترسی خارجی استفاده میشوند.
در ادامه برای درک عمیقتر تفاوت متد Public با Protected و Private هرکدام را بررسی کردهایم و مثالهای لازم را آوردهایم.
سطوح دسترسی در C#
سطوح دسترسی در C# به ما این امکان را میدهند که تعیین کنیم چه کسانی به اعضای یک کلاس (متدها، متغیرها و خصوصیات) دسترسی داشته باشند. این سطوح دسترسی شامل Public ،Protected و Private میشوند. علاوهبر این، سطح دسترسی Internal و Protected Internal نیز وجود دارند که در ادامه به آنها اشاره میکنیم.
متد Public
متدهای Public برای تعامل بین کلاسها و همچنین فراهم کردن یک API برای کلاس مورد استفاده قرار میگیرند. این متدها به همه کدها، بدون محدودیت، اجازه دسترسی میدهند.
متدهای Public به هر کدی، چه در داخل کلاس و چه در خارج از آن، اجازه میدهند تا از آنها استفاده کند. این سطح دسترسی برای متدهایی که قرار است بهعنوان API عمومی کلاس عمل کنند، مناسب است. متدهای Public اغلب در کلاسهایی مانند سرویسها، کنترلرها و مدلهای داده استفاده میشوند که نیاز است دیگر بخشهای برنامه به آنها دسترسی داشته باشند.
مزایا:
- قابلیت دسترسی از هر نقطه از برنامه.
- مناسب برای متدهایی که باید برای همه قابل استفاده باشند.
معایب:
- ممکن است منجر به استفاده نادرست از متدها و دادهها شود.
- کنترل کمتری بر روی دسترسی و تغییرات وجود دارد.
مثال؛ برای درک بهتر تفاوت متد Public با Protected و Private
public class ExampleClass
{
public void PublicMethod()
{
Console.WriteLine(“This is a public method.”);
}
}
public class Test
{
public static void Main()
{
ExampleClass obj = new ExampleClass();
obj.PublicMethod(); // Accessible from outside the class
}
}
در این مثال، متد PublicMethod بهشکل Public تعریف شده است و میتوان از خارج از کلاس ExampleClass به آن دسترسی داشت. این ویژگی باعث میشود که متدهای Public برای ارتباط بین کلاسها و ارائه عملکردهای عمومی استفاده شوند.
متد Protected
متدهای Protected دسترسی محدودتری دارند و فقط از داخل کلاسهای پایه و کلاسهای مشتقشده قابل دسترسی هستند. این متدها برای تعریف رفتارهایی که قرار است فقط در داخل سلسلهمراتب وراثت استفاده شوند، بهکار میروند.
متدهای Protected اغلب در کلاسهای پایه تعریف میشوند تا کلاسهای فرزند بتوانند از این رفتارها استفاده کنند.
مزایا:
- امکان استفاده مجدد از کد در کلاسهای مشتقشده.
- کنترل بیشتر بر دسترسی به اعضای کلاس.
معایب:
- از خارج از سلسلهمراتب کلاسها قابل دسترسی نیستند.
- پیچیدگی بیشتر در طراحی کلاسها و وراثت.
مثال: برای درک بهتر تفاوت متد Public با Protected و Private
public class BaseClass
{
protected void ProtectedMethod()
{
Console.WriteLine(“This is a protected method.”);
}
}
public class DerivedClass : BaseClass
{
public void AccessProtectedMethod()
{
ProtectedMethod(); // Accessible within derived class
}
}
public class Test
{
public static void Main()
{
DerivedClass obj = new DerivedClass();
obj.AccessProtectedMethod(); // Calls protected method through public method
}
}
در این مثال، ProtectedMethod در کلاس BaseClass بهعنوان یک متد Protected تعریف شده است و فقط از داخل کلاسهای مشتقشده (مانند DerivedClass) قابل دسترسی است. متد AccessProtectedMethod در کلاس DerivedClass از متد Protected استفاده میکند و از آنجا که AccessProtectedMethod بهصورت Public تعریف شده است، میتوان از خارج از کلاس DerivedClass به آن دسترسی داشت.
متد Private
متدهای Private دارای بالاترین سطح محدودیت دسترسی هستند. این متدها فقط در داخل همان کلاس قابل دسترسی هستند و نمیتوان از خارج از آنها استفاده کرد. این ویژگی برای مخفیسازی جزئیات پیادهسازی و حفاظت از دادههای داخلی کلاس بسیار مفید است.
متدهای Private فقط در داخل همان کلاس قابل دسترسی هستند و هیچ کد خارجی نمیتواند به آنها دسترسی داشته باشد. این متدها برای مخفیسازی جزئیات پیادهسازی و حفاظت از دادههای داخلی کلاس بسیار مفید هستند.
همچنین متدهای Private اغلب برای عملیات داخلی کلاس که نباید از بیرون دسترسی داشته باشند، استفاده میشوند. بنابراین تفاوت public و private در c# این است که در اعضای public (متدها، متغیرها و خصوصیات) از هر جایی در برنامه قابل دسترسی هستند.
اما اعضای private فقط از داخل همان کلاس قابل دسترسی هستند و هیچ کد خارجی نمیتواند به آنها دسترسی داشته باشد.
مزایا:
- حداکثر کنترل بر دسترسی به اعضای کلاس.
- حفاظت از جزئیات پیادهسازی و جلوگیری از تغییرات ناخواسته.
معایب:
- عدم دسترسی از بیرون از کلاس، که ممکن است در برخی موارد محدودکننده باشد.
- نیاز به متدهای عمومی برای دسترسی غیرمستقیم.
مثال؛ برای درک کامل تفاوت متد Public با Protected و Private
public class ExampleClass
{
private void PrivateMethod()
{
Console.WriteLine(“This is a private method.”);
}
public void PublicMethod()
{
PrivateMethod(); // Accessible within the same class
}
}
public class Test
{
public static void Main()
{
ExampleClass obj = new ExampleClass();
obj.PublicMethod(); // Calls private method through public method
}
}
در این مثال، متد PrivateMethod به شکل Private درنظر گرفته شده است و فقط در داخل کلاس ExampleClass قابل دسترسی میباشد. با این حال، متد PublicMethod که بهصورت Public تعریف شده است، میتواند این متد را فراخوانی کند و به کاربران خارجی اجازه میدهد تا بهصورت غیرمستقیم از PrivateMethod استفاده کنند.
اگر میخواهید در کلاس در مفاهیمی مثل تفاوت public – private – protected را یاد بگیرید، میتوانید در کلاسهای بهروز آکادمی چابک شرکت کنید.
دیگر سطوح دسترسی
از دیگر سطوح دسترسی میتوانیم به گزینههای زیر اشاره کنیم:
Internal
متدهای Internal فقط در داخل همان اسمبلی (پروژه) قابل دسترسی هستند. این سطح دسترسی برای کدهایی که باید در یک پروژه مشترک استفاده شوند اما نباید از پروژههای دیگر قابل دسترسی باشند، مناسب است.
Protected Internal
متدهای Protected Internal هم در داخل سلسلهمراتب وراثت و هم در داخل همان اسمبلی قابل دسترسی هستند.
سخن پایانی
سطح دسترسی متدها در C# ابزاری قدرتمند برای کنترل و مدیریت دسترسی به اعضای کلاسها است. برای تعیین سطح دسترسی کاربران در سی شارپ باید با تفاوت متد Public با Protected و Private آشنا باشید.
متدهای Public برای ارائه APIهای عمومی و تعامل بین کلاسها استفاده میشوند، متدهای Protected برای مدیریت دسترسی در داخل سلسلهمراتب وراثت بهکار میروند و متدهای Private برای مخفیسازی و حفاظت از دادههای داخلی کلاس کاربرد دارند.
آکادمی چابک دورههای جامعی در زمینه برنامهنویسی ارائه میدهد که شامل مفاهیم پایه تا پیشرفته میشود. این دورهها شامل آموزش زبانهای برنامهنویسی مختلف مانند C#, Java, Python و JavaScript هستند. اگر علاقهمندی به این دورهها هستید، هماکنون با کارشناسان ما تماس بگیرید.
منابع