مُعدِّلات الوصول في C#: public, private, protected, internal — ما الفرق ومتى تستخدم كل منها؟
مرحبًا بالجميع! لقد بدأت للتو في تعلم C# وأكتب أولى كلاساتي. تعثرت في مُعدِّلات الوصول. يبدو أنني أفهم أن `public` تعني "للجميع"، و `private` تعني "فقط داخل الكلاس"، و `protected` تعني "للوُرَّاث". لكن في الممارسة العملية، يحدث لدي ارتباك.
إليك مثال. لدي كلاس `BankAccount`:
class BankAccount
{
public string AccountNumber { get; set; }
private decimal balance = 0;
protected decimal interestRate = 0.05m;
public void Deposit(decimal amount)
{
balance += amount;
}
}
ثم أقوم بإنشاء كلاس `SavingsAccount` الذي يرث من `BankAccount`:
class SavingsAccount : BankAccount
{
public void ApplyInterest()
{
// هنا المشكلة: يمكنني استخدام interestRate (protected)،
// لكن لا يمكنني استخدام balance (private).
// هذا مفهوم. لكن ماذا أفعل إذا أردت إعطاء الوصول إلى balance
// فقط للوُرَّاث، وليس لجميع الآخرين؟
}
}