K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1897] オーバーライド時の共変、反変について
投稿者:lang
2015/02/21 14:30:58

”プログラミング言語を作る”内の8-3-5章にて 下の解説を読みました。 class ShapeArray{ Shape get(int index); void set(int index, Shape shape); }; class CircleArray extends ShapeArray{ Circle get(int index); ・・・① void set(int index, Circle circle); ・・・② }; ①は戻りの値の型が共変なので問題無し。 ②は引数の方が共変であるため実行時チェックが必要。 アップキャストは常に可能ですが、 ダウンキャスト時は実行時チェックが必要だと理解しています。 戻りの値の型が共変、引数の型が共変、 ともにダウンキャストとなる、という認識ですが、 なぜ、問題の有無の判断が変わってくるのでしょうか。 一般的な言語のオーバーライドの動作に関することで 本掲示板への質問が適切かどうか分かりませんが、 もしよろしければ細くいただけると助かります。
[この投稿を含むスレッドを表示] [この投稿を削除]