【C#】overrideとnewの違い
new
フィールドの型に応じて呼び出しメソッドが決められる。
override
インスタンスの型に応じて呼び出しメソッドが決められる。
フィールドの型とインスタンスの型
class A
{
internal void Call1() => System.Console.WriteLine("A.Call1");
internal virtual void Call2() => System.Console.WriteLine("A.Call2");
}
class B : A
{
internal new void Call1() => System.Console.WriteLine("B.Call1");
internal override void Call2() => System.Console.WriteLine("B.Call2");
}
A a = new B(); // フィールドの型はA, インスタンスの型はB
a.Call1(); // A.Call1()が呼び出される
a.Call2(); // B.Call2()が呼び出される