从派生类修改变量
本文关键字:变量 修改 派生 | 更新日期: 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