假设我有一个如下定义的接口:
public interface IFunctionality
{
void Method();
}
我为一个抽象类实现了这个接口,如下所示:
public abstract class AbstractFunctionality: IFunctionality
{
public void Method()
{
Console.WriteLine("Abstract stuff" + "\n");
}
}
我再次有一个从抽象类继承的具体类,如下所示:
public class ConcreteFunctionality: AbstractFunctionality
{
public void Method()
{
Console.WriteLine("Concrete stuff" + "\n");
}
}
现在我有以下代码,
ConcreteFunctionality mostDerived = new ConcreteFunctionality();
AbstractFunctionality baseInst = mostDerived;
IFunctionality interfaceInst = mostDerived;
mostDerived.Method();
baseInst.Method();
interfaceInst.Method();
执行这些东西后我得到的输出如下。
Concrete stuff
Abstract stuff
Abstract stuff
但是我一直期望输出在所有三种情况下都是“具体的东西”,因为我在这里所做的是将 的引用分配给和 类型的ConcreteFunctionality
变量。AbstractFunctionality
IFunctionality
内部发生了什么。请澄清。