共変、反変、不変とは?
オブジェクト指向言語で親クラスに対して子クラスを定義する際、親子で型が違っても、型システムを壊さないパターンがいくつかあります。そのパターンの中で出てくるのが、共変、反変、不変というキーワードです。共変とは、広い型を持つ親クラスから、狭い型を持つ子クラスを導出する際に、合わせて広い型から狭い型へ変わることを指します。反変とは逆に、狭い型から広い型へ変わること、不変とは型が変わらないことを指します。
番町のITおじさんが書く、ITエンジニアの教養ブログです。様々なプログラミング言語やソフトウェア工学についての知識、ITやIT業界の歴史、動向などを取り上げます。