我在C#中做作业,在那里我处理抽象类。
public abstract class Account
{
public abstract bool Credit(double amount);
public abstract bool Debit(double amount);
}
public class SavingAccount : Account
{
public override bool Credit(double amount)
{
bool temp = true;
temp = base.Credit(amount + calculateInterest());
return temp;
}
public override bool Debit(double amount)
{
bool flag = true;
double temp = getBalance();
temp = temp - amount;
if (temp < 10000)
{
flag = false;
}
else
{
return (base.Debit(amount));
}
return flag;
}
}
当我调用base.Debit()或base.Credit()时,它给出了我无法调用抽象成员的错误。 请帮帮我。
答案 0 :(得分:3)
抽象意味着没有实现。您可以使用它来强制派生类提供自己的类。因此,您不应该直接调用抽象方法。我建议读这个: http://msdn.microsoft.com/en-us/library/sf985hc5(v=vs.80).aspx
答案 1 :(得分:3)
你不能调用抽象方法,这个想法是声明为abstract的方法只需要派生类来定义它。使用base.Debit
会影响尝试调用抽象方法,这是无法完成的。更仔细地阅读您的代码,我认为这是您想要的Debit()
public abstract class Account
{
protected double _balance;
public abstract bool Credit(double amount);
public abstract bool Debit(double amount);
}
public class SavingAccount : Account
{
public double MinimumBalance { get; set; }
public override bool Debit(double amount)
{
if (amount < 0)
return Credit(-amount);
double temp = _balance;
temp = temp - amount;
if (temp < MinimumBalance)
{
return false;
}
else
{
_balance = temp;
return true;
}
}
public override bool Credit(double amount)
{
if (amount < 0)
return Debit(-amount);
_balance += amount;
return true;
}
}