从派生类修改变量

本文关键字:变量 修改 派生 | 更新日期: 2023-09-27 18:09:21

我四处找了找,但找不到一个具体的答案。

这是我感兴趣的抽象类Account的一部分:

 public abstract class Account
 {
 private decimal balance;
 public decimal Balance
    {
        get
        {
            return this.balance;
        }
        protected set
        {
            if (value < 0)
            {
                throw new ArgumentException("Balance can't be negative");
            }
            balance = value;
        }
    }
 protected Account(decimal balance)
    {
        this.Balance = balance;
    }
 }

现在我有了一个名为DepositAccount的派生类,它使用IWithdraw接口中的Withdraw()方法直接与Balance属性一起工作。

public class DepositAccount : Account, IWithdraw
    {
        public DepositAccount(decimal balance)
            : base(balance)
        {
        }
        public void Withdraw(decimal amount)
        {
            if (amount > this.Balance)
            {
                throw new ArgumentException("Not enough balance!");
            }
            this.Balance -= Balance;
        }
    }

我的问题是如何最好地实现平衡属性在基本帐户类?

我只希望派生类(那些能够提取或存入资金的账户)能够修改它(因此是保护集)。

我应该将属性设置为protected而不是public还是只保留setter受保护?

从派生类修改变量

属性是语法糖,使访问器更容易和优雅地实现,但它们仍然编译成常规方法。

如果你要谈论方法而不是属性,你会如何解决你的问题?我猜你会以同样的解决方案结束:修改Balance的内容将被保护,并且检索其值将是public

如果您想公开访问Balance,则将其保留为public,否则使用protected