C# オブジェクト指向 基礎知識

ポリモーフィズム

アップキャストは問題ない。ダウンキャストは明示キャストが必要。

ダウンキャストの変換はキャスト元の変数が保持しているインスタンスがキャスト先のクラスと同じの必要がある。通常、アップキャストして戻すときにダウンキャストが発生する。

virtual-overrideがなくても基底クラスでの定義されたメソッドは派生クラスで上書(隠蔽)きできる。ただコンパイラが警告は出す。その状態だと変数の型で呼び出されるメソッドが決まる。virtualだけ付けてoverrideを付けないと同じく変数の型で呼び出す。virtual-overrideがついてインスタンスの型で呼び出す。派生クラスでoverrideだけ付けてvirtualがないとコンパイルエラーになる。

virtual-overrideされるとインスタンスの型で呼ばれるメソッドが決まる。

メソッドのシグネチャ

メソッド名、パラメータの数、順序、型
CLRでは戻り値の型をシグネチャに含めているのでC#/VBとは違う。