J# 2003 までは WndProc メソッドはオーバーライドできませんでした。
WndProc メソッドをオーバーライドするには、参照渡しの引数を持つメソッドが定義できなければなりません。
J# 2003 までは、この参照渡しの引数を表現する機構がサポートされていませんでした。
つまり、WndProc メソッドに限らず、参照渡しの引数を持つメソッドは、オーバーライドできなかったのです。(;^-^)
基底クラス (Java 的には、スーパークラス) へのメソッドの '呼び出し' については、
VJ# のコンパイラが暗黙の変換を行ってくれるがために可能でした。
参照渡しをする引数であることを、コンパイラに知らせるには、
前回の記事、J# に追加された @ref タグ で書いたように、@ref タグを使用します。
J# 2005
public class Form1 extends SuperForm1 {
自動で生成されるコードは省略...
protected void WndProc(/** @ref */ System.Windows.Forms.Message m) {
super.WndProc(m)
}
}
J# 2005 では、@ref タグが追加されたことにより、'呼び出し' だけでなく '定義' ができるようになりました。
その結果として「WndProc など、参照渡しの引数を持つメソッドがオーバーライド可能になった」が正しいです。