我有以下代码:
interface ICalculator
{
int Sum ( int x, int y);
}
abstract class AbsCalculator
{
public abstract int Sum(int x, int y);
}
class Calculator : AbsCalculator, ICalculator
{
public override int Sum(int x, int y)
{
Console.WriteLine ( "From overriden method" );
return x + y;
}
}
尽管我没有实现接口,但以下语句工作正常并且程序编译:
Calculator calculator = new Calculator();
Console.WriteLine ( calculator.Sum(10, 20) );
所以我的第一个问题是:它为什么起作用?
然后,我将以下接口实现添加到 Calculator 类:
int ICalculator.Sum(int x, int y)
{
Console.WriteLine("From implemented method");
return x + y;
}
再次尝试以下语句时:
Calculator calculator = new Calculator();
Console.WriteLine ( calculator.Sum(10, 20) );
从抽象中重写的方法仍然被调用。所以我的第二个问题是:为什么程序从抽象类调用方法而不是从接口调用方法?