-1

私は次のことを試しましたが、うまくいきます:

interface ICalculator 
{
    int CalculateSum(int x, int y);
    int CalculateProduct(int x, int y);
}

abstract class AbstractCalculator : ICalculator 
{
    public abstract int CalculateSum(int x, int y);
    public int CalculateProduct(int x, int y) 
    {
        return x * y;
    }
}

Buこれを試してみるとうまくいきませんでした:

interface ISum
{
    int Sum ( int x, int y );
}

abstract class AbsSum1
{
    public abstract int Sum ( int x, int y );
}

abstract class AbsSum2 : AbsSum1, ISum
{
    public abstract int AbsSum1.Sum ( int x, int y );
    public abstract int ISum.Sum ( int x, int y );
    public abstract int Sum ( int x, int y);    
} 

誰でも私を助けることができますか?c# で実行できるかどうかをテストしているだけです。AbsSum2 からクラスを派生させ、3 つのメソッドすべてを実装する必要があります。

4

2 に答える 2

0

インターフェイスを実装する場合、ほとんど 2 つのオプションがあります

1) 暗黙的に実装:

abstract class AbsSum2 : AbsSum1, ISum
{
  // Since the base class already has a **public** Sum() method with proper signature
  // ISum will use the method declared in the base class.
}

2)明示的に行います:

abstract class AbsSum2 : AbsSum1, ISum
{
  // Manually redirect interface to Sum() method declared in the base class.

 int ISum.Sum(int x, int y)
 {
    return this.Sum(x, y);
 }

}

于 2013-11-04T16:34:04.990 に答える