Avatar ·

مُعدِّلات الوصول في 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
        // فقط للوُرَّاث، وليس لجميع الآخرين؟
    }
}