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;
    }
}
然后我创建了一个继承自`BankAccount`的`SavingsAccount`类:
class SavingsAccount : BankAccount
{
    public void ApplyInterest()
    {
        // 这里有问题:我可以使用interestRate (protected),
        // 但不能使用balance (private)。
        // 这可以理解。但如果我想让balance只对继承者可用,
        // 而不对其他人可用,该怎么办?