共変性と反変性 (計算機科学)
共変性と反変性はクラスの継承でよく用いられる。ジェネリッククラスの継承の共変性反変性は、総称化データ構造の共変性反変性と似た用法になる。クラスのメソッドの継承の共変性反変性は、関数の型の共変性反変性と似た用法になる。
共変性反変性で枠組みされたクラスのメソッドの継承の型安全性を、バーバラ・リスコフは振る舞いサブタイピング(英語版)の概念で説明している。
リターン型とパラメータ型が同じままの継承(型安全)
リターン型の共変の継承(型安全)
パラメータ型の反変の継承(型安全)
パラメータ型の共変の継承(型安全ではない)
歴代オブジェクト指向言語でのメソッドの継承の共変性反変性は、下のように変遷している。Eiffel(86年発表)のパラメータ型は共変だったようだが、リスコフの置換原則(94年発表)で反変に路線修正されている。