>>831
virtualがある理由は、
●C++で書いたコードをなんとかしてC#でも再利用したい。
●C++に慣れてしまったプログラマを少しでも楽にC#に移行させたい。
●.net framework といういものが、古い言語を再利用することを
 目的に作られているためあえて付け加えられた。

と思う。

オブジェクト指向でいう、拡張とは、継承だけがすべてじゃないぞ。
デザインパターン本に拡張方法が載ってるから調べて見るといい。