wildcatsの日記

赤羽在住でIT関係の会社の社長やってます。

返り値の型だけ変えてメソッドをオーバーライドする


JavaC++のどちらも引数の型をcontravariantにしてオーバーライドすることはできないためList30はコンパイル・エラーとなってしまう。
これはたまにTigerでサポートされているものと思って書いてみて
あれ?なんで?って思っちゃいます。
引数の型を反変にしてオーバーライドできないんすね。
戻り値の型の共変はサポートしてるのに。
まぁそんなときは素直にオーバーライド元のメソッドの
引数の型と合わせちゃいますけど。


でもまさーるさんのページを読むと
Eiffelは引数の型を共変にしてもオーバーライドできるんすか。。。。
うーん。まったく理解できん。
参考資料に載ってたBertrand Meyerの「Static typing and other mysteries of life
もがんばって読んでみようかな?
僕もOOSC2は持ってにゃいし*1

*1:あぁ石を投げないで・・・