質問があります。このコードで、One()メソッドがクラスBから実行され、Two()メソッドがクラスAから実行されるのはなぜですか?それがキャスティングをしていることは知っていますが、その方法が機能しているのかわかりません。ちなみに、この種のトリックを使った良いリンクや本は大歓迎です。あなたより。
class Program
{
static void Main(string[] args)
{
B b = new B();
A a = (A)b;
a.One();
a.Two();
}
}
public class A
{
public virtual void One()
{
Console.WriteLine("A One");
}
public void Two()
{
Console.WriteLine("A Two");
}
}
public class B : A
{
public override void One()
{
Console.WriteLine("B One");
}
public new void Two()
{
Console.WriteLine("B Two");
}
}