1
我環顧四周,但無法找到具體的答案來解決我的問題。從派生類中修改變量
這是我的抽象類賬戶的一部分,我很感興趣:
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接口。
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;
}
}
我的問題是如何最好地實現基地帳戶類的平衡財產?
我只希望派生類(那些將能夠提取或存款的賬戶)能夠修改它(因此受保護的集合)。
我應該將屬性設置爲受保護而不是公開或只保留setter保護?
爲什麼要讓吸氣劑受到保護?其他班級不應讀取餘額的任何原因? – wimh
取決於是否允許公開讀取餘額。這是一個設計決策問題。 – Rob
如果你想讓任何人能夠讀取餘額,但只有派生類能夠設置它,那麼你就對了。使getter受保護只會允許派生類讀取平衡。 –