クラスをベースクラスにキャストするときに、オーバーライドされたメソッドが呼び出される理由を誰かが説明してくれますか?
class Base
{
public virtual void VirtualMethod()
{
Console.WriteLine("Base virtual method");
}
}
sealed class Derived : Base
{
public override void VirtualMethod()
{
Console.WriteLine("Overriden method");
}
}
static void Main(String[] args)
{
Derived d = new Derived();
((Base)d).VirtualMethod();
}
つまり、このコードは次のように出力されます。
Overriden method
ではない
Base virtual method
実行時またはコンパイル時の未来ですか?
ベースの仮想メソッドを呼び出して派生したものから呼び出すことができることは知ってbase.VirtualMethod()
いますが、外部から呼び出すことはできますか? (fromMain
または他のクラスのように)