返り値の型だけ変えてメソッドをオーバーライドする
これはたまにTigerでサポートされているものと思って書いてみて
JavaとC++のどちらも引数の型をcontravariantにしてオーバーライドすることはできないためList30はコンパイル・エラーとなってしまう。
あれ?なんで?って思っちゃいます。
引数の型を反変にしてオーバーライドできないんすね。
戻り値の型の共変はサポートしてるのに。
まぁそんなときは素直にオーバーライド元のメソッドの
引数の型と合わせちゃいますけど。
でもまさーるさんのページを読むと
Eiffelは引数の型を共変にしてもオーバーライドできるんすか。。。。
うーん。まったく理解できん。
参考資料に載ってたBertrand Meyerの「Static typing and other mysteries of life」
もがんばって読んでみようかな?
僕もOOSC2は持ってにゃいし*1。
*1:あぁ石を投げないで・・・