共変戻り値とは

調べ物をしていた時に、共変戻り値という単語に出会ったので調べてみた。

 

wikiだと以下の説明になる。

プログラミング言語型システムにおいて、型変換演算子が、

  • 型の順序関係を維持する (≤ で順序づけたとき、特殊から一般の順になる) とき、共変である (covariant) という。
  • 型の順序関係を反転させる (≤ で順序づけたとき、一般から特殊の順になる) とき、反変である (contravariant) という。
  • 上記いずれにも該当しないとき、不変である (invariant) という。
  • 共変かつ反変のとき、双変である (bivariant) という。
    共変性と反変性 (計算機科学) - Wikipedia

 

実際に、問題になる例が挙げられていた。

m12i.hatenablog.com

d.hatena.ne.jp

 

戻り値が子クラスの型で定義できてしまうと、代入時にいろいろできてしまって問題になるようだ。