دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
Class Library در سی شارپ
1404/01/10 -
دستور BREAK در پایگاه داده sql
1404/01/02 -
دستور CONTINUE در پایگاه داده SQL
1404/01/01 -
دستور WAITFOR در پایگاه داده SQL
1403/12/26 -
دستور GOTO در پایگاه داده SQL
1403/12/25 -
حلقه WHILE در پایگاه داده SQL
1403/12/24
سطح دسترسی Protected (محافظتشده) در سی شارپ

مفهوم سطح دسترسی Protected در سی شارپ
در سیشارپ، سطح دسترسی protected به اعضای کلاس اجازه میدهد که فقط درون همان کلاس و کلاسهای مشتقشده (فرزند) قابل دسترسی باشند.
این سطح دسترسی ترکیبی از private و public است، زیرا برخلاف private، امکان استفاده از اعضای protected در کلاسهای ارثبری شده وجود دارد، اما برخلاف public، سایر کلاسها به آن دسترسی ندارند.
این ویژگی در مفهوم وراثت (Inheritance) بسیار مفید است، زیرا به کلاسهای فرزند اجازه میدهد که بدون افشای جزئیات به اعضای پایه دسترسی داشته باشند.
استفاده از protected باعث افزایش قابلیت توسعه و کپسولهسازی در برنامهنویسی شیگرا (OOP) میشود.
بهعنوان مثال:
class Parent {
protected string secret = "This is protected!";
}
class Child : Parent {
public void ShowSecret() {
Console.WriteLine(secret); // قابل دسترسی در کلاس فرزند
}
}
در این مثال، فیلد secret در کلاس Parent تعریف شده و کلاس Child به آن دسترسی دارد، اما خارج از این سلسلهمراتب، استفاده از آن ممکن نیست.
مزایای استفاده از سطح دسترسی Protected
-
امنیت بیشتر
با استفاده از سطح دسترسی Protected، میتوان اعضای داخلی یک کلاس را از دسترسیهای غیرمجاز محافظت کرد و در عین حال به کلاسهای مشتقشده اجازه دسترسی به آنها را داد. -
انعطافپذیری در ارثبری
کلاسهای مشتقشده میتوانند از ویژگیهای کلاس پایه استفاده کنند بدون اینکه دسترسی به آنها از بیرون کد امکانپذیر باشد. -
کاهش وابستگیها
استفاده از سطح دسترسی Protected کمک میکند که ارتباطات بین کدهای مختلف محدود شود، و در نتیجه برنامهنویس میتواند به راحتی تغییرات مورد نظر خود را انجام دهد بدون اینکه سایر بخشهای کد تحت تأثیر قرار گیرند.
مقایسه سطوح دسترسی در سی شارپ
قبل از اینکه به بررسی دقیقتر سطح دسترسی Protected بپردازیم، خوب است که نگاهی به دیگر سطوح دسترسی در زبان سی شارپ داشته باشیم. این سطوح به شرح زیر هستند:
-
Public
- اعضای با سطح دسترسی Public برای همه قابل دسترسی هستند، چه از داخل همان کلاس، چه از کلاسهای مشتقشده، چه از خارج از کلاس.
-
Private
اعضای با سطح دسترسی Private فقط از داخل همان کلاس قابل دسترسی هستند و هیچ دسترسی به آنها از خارج از کلاس وجود ندارد. -
Protected
اعضای با سطح دسترسی Protected فقط از داخل همان کلاس و کلاسهای مشتقشده قابل دسترسی هستند. -
Internal
اعضای با سطح دسترسی Internal فقط درون همان اسمبلی قابل دسترسی هستند. -
Protected Internal
اعضای با سطح دسترسی Protected Internal از داخل همان کلاس و همچنین درون همان اسمبلی یا در کلاسهای مشتقشده قابل دسترسی هستند. -
Private Protected
اعضای با سطح دسترسی Private Protected از داخل همان کلاس و کلاسهای مشتقشده در همان اسمبلی قابل دسترسی هستند.
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
استفاده از سطح دسترسی Protected
سطح دسترسی Protected عمدتاً در ارثبری و هنگامی که میخواهیم به کلاسهای مشتقشده (Subclasses) اجازه دسترسی به اعضای خاصی از کلاس اصلی (Base Class) را بدهیم، استفاده میشود.
در حالی که از دسترسی غیرمجاز به این اعضا در خارج از سلسلهمراتب کلاسها جلوگیری میکند.
در ادامه یک مثال ساده از نحوه استفاده از سطح دسترسی Protected را بررسی میکنیم:
using System;
class Animal
{
// فیلد با سطح دسترسی Protected
protected string name;
// سازنده کلاس
public Animal(string name)
{
this.name = name;
}
// متدی برای چاپ نام
public void PrintName()
{
Console.WriteLine("Name: " + name);
}
}
class Dog : Animal
{
// سازنده کلاس مشتقشده
public Dog(string name) : base(name) { }
// متدی برای دسترسی به ویژگی name از کلاس پایه
public void Bark()
{
Console.WriteLine(name + " is barking!");
}
}
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog("Buddy");
// دسترسی به متد عمومی در کلاس پایه
dog.PrintName();
// دسترسی به ویژگی protected در کلاس مشتقشده
dog.Bark();
}
}
در این مثال، کلاس Animal یک فیلد name دارد که با سطح دسترسی Protected مشخص شده است.
این فیلد در داخل کلاس Dog که از Animal ارثبری کرده است، قابل دسترسی است، اما از خارج از کلاسها نمیتوان به آن دسترسی داشت.
در نتیجه، در کد بالا، زمانی که شیء dog از کلاس Dog ایجاد میشود، میتوانیم از متد Bark در کلاس مشتقشده استفاده کنیم تا به فیلد name دسترسی پیدا کنیم.
معایب استفاده از سطح دسترسی Protected
-
محدودیت دسترسی
ممکن است در برخی موارد شما بخواهید به اعضای کلاس از خارج از سلسلهمراتب ارثبری دسترسی داشته باشید که سطح دسترسی Protected این کار را محدود میکند. -
پیشنهادات بر اساس ارثبری
سطح دسترسی Protected معمولاً تنها زمانی مفید است که ارثبری در برنامهنویسی شما استفاده شده باشد.
اگر ارثبری برای شما مهم نباشد، این سطح دسترسی ممکن است چندان کاربردی نباشد.
.
مثال پروژه محور از سطح دسترسی Protected
پروژه: سیستم مدیریت حیوانات
در این پروژه، قصد داریم یک سیستم ساده برای مدیریت حیوانات ایجاد کنیم.
کلاسهای پایه و مشتقشده خواهیم داشت که از سطح دسترسی Protected برای کنترل دسترسی به ویژگیهای کلاس استفاده میکنند.
توضیحات
-
یک کلاس پایه به نام Animal داریم که ویژگیهای مشترک بین همه حیوانات مانند نام و سن را نگهداری میکند.
-
یک کلاس مشتقشده به نام Dog ایجاد میکنیم که از ویژگیهای کلاس Animal استفاده میکند.
-
از سطح دسترسی Protected برای دسترسی به ویژگیهای name و age در کلاسهای مشتقشده استفاده خواهیم کرد.
کد
using System;
namespace AnimalManagement
{
// کلاس پایه
class Animal
{
// ویژگیهای protected که فقط از داخل همین کلاس و کلاسهای مشتقشده قابل دسترسی هستند
protected string name;
protected int age;
// سازنده برای تنظیم نام و سن
public Animal(string name, int age)
{
this.name = name;
this.age = age;
}
// متدی برای چاپ اطلاعات حیوان
public void PrintInfo()
{
Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
}
}
// کلاس مشتقشده از Animal
class Dog : Animal
{
// سازنده کلاس Dog
public Dog(string name, int age) : base(name, age) { }
// متدی برای معرفی سگ
public void Bark()
{
Console.WriteLine(name + " says Woof!");
}
// متدی برای افزایش سن سگ
public void IncreaseAge()
{
age++;
Console.WriteLine(name + " is now " + age + " years old.");
}
}
class Program
{
static void Main(string[] args)
{
// ایجاد شیء Dog
Dog dog = new Dog("Buddy", 3);
// دسترسی به متد کلاس پایه برای چاپ اطلاعات
dog.PrintInfo();
// دسترسی به متد کلاس Dog برای معرفی و افزایش سن
dog.Bark();
dog.IncreaseAge();
// چاپ اطلاعات بهروزشده
dog.PrintInfo();
}
}
}
توضیحات کد
- کلاس Animal: این کلاس ویژگیهای protected name و age دارد. این ویژگیها فقط از داخل خود کلاس Animal یا کلاسهای مشتقشده قابل دسترسی هستند.
متد PrintInfo برای چاپ اطلاعات حیوان تعریف شده است.
- کلاس Dog: کلاس Dog از Animal ارثبری میکند و ویژگیهای name و age را بهطور غیرمستقیم از طریق ارثبری به دست میآورد.متد Bark برای چاپ صدای سگ و متد IncreaseAge برای افزایش سن سگ پیادهسازی شده است.
- کلاس Program: در کلاس Program، یک شیء از کلاس Dog ایجاد میکنیم و از متدهای PrintInfo، Bark و IncreaseAge استفاده میکنیم.
خروجی برنامه
Name: Buddy
Age: 3
Buddy says Woof!
Buddy is now 4 years old.
Name: Buddy
Age: 4
دوره های مرتبط

آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.