【きょうへんせいとはんへんせい】
共変性と反変性 とは?
最終更新:
💡 猫を返す側と、動物を受け取る側の違い
型Aが型Bとして使えるとき、その関係が型を組み合わせた形でも同じ向きに伝わるか、逆向きになるかを表す性質。値を返す側と受け取る側で、安全な置き換えの向きが変わる。
📌 このページのポイント
- 共変:元の型と同じ向きに、複合型を置き換えられる
- 反変:元の型と逆向きに、複合型を置き換えられる
- 不変:元の型の関係だけでは、置き換えられない
- 対応する型や宣言方法は言語とAPIによって異なる
CatはAnimalなのに、猫のリストを動物のリストにできないの?
共変性は、どっち向き?
反変性は、なぜ逆向きなの?
読み取り専用なら、絶対に中身は変わらない?
言語が変わっても、同じ書き方?
まとめ:ざっくりこれだけ覚えればOK!
「共変性と反変性」って出てきたら「型を組み合わせたとき、安全に置き換えられる向きのルール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Covariance and Contravariance」 = 共変性と反変性
💬 co- は「一緒に」contra- は「反対に」という意味の接頭辞で、型パラメータの変化が元の型の継承方向と同じか逆かを表しているんだよ。