「最新の派生メソッド」についてではありません。ポリモーフィズムを使用するとどうなるかについてです。親クラスが期待されるコンテキストで派生クラスのインスタンスを使用する場合、virtual
/を使用しないと、親クラスのメソッドが呼び出されますoverride
。
例:
class A
{
public int GetFirstInt() { return 1; }
public virtual int GetSecondInt() { return 2; }
}
class B : A
{
public int GetFirstInt() { return 11; }
public override int GetSecondInt() { return 12; }
}
A a = new A();
B b = new B();
int x = a.GetFirstInt(); // x == 1;
x = a.GetSecondInt(); // x == 2;
x = b.GetFirstInt(); // x == 11;
x = b.GetSecondInt(); // x == 12;
しかし、次の2つの方法で
public int GetFirstValue(A theA)
{
return theA.GetFirstInt();
}
public int GetSecondValue(A theA)
{
return theA.GetSecondInt();
}
これが起こります:
x = GetFirstValue(a); // x == 1;
x = GetSecondValue(a); // x == 2;
x = GetFirstValue(b); // x == 1!!
x = GetSecondValue(b); // x == 12