3

私は抽象クラスを扱っている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()を呼び出すと、抽象メンバーを呼び出せないというエラーが発生します。私を助けてください。

4

2 に答える 2

3

抽象とは、実装がないことを意味します。これを使用して、派生クラスに独自のクラスを提供させます。したがって、抽象メソッドを直接呼び出すべきではありません。これを読むことをお勧めします:http: //msdn.microsoft.com/en-us/library/sf985hc5 (v = vs.80).aspx

于 2012-04-18T22:02:46.113 に答える
3

抽象メソッドを呼び出すことはできません。抽象として宣言されたメソッドは、それを定義するために派生クラスを必要とするだけです。使用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;
  }
}
于 2012-04-18T22:11:41.420 に答える