以下に定義されているインターフェイスがあるとします。
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
の変数への参照を割り当てているため、3 つのケースすべてで出力が「具体的なもの」になることを期待していたことです。AbstractFunctionality
IFunctionality
内部で起こっていること。明確にしてください。