共変性と反変性
#型
https://ja.wikipedia.org/wiki/共変性と反変性_(計算機科学)
共変:戻り値の型に使われる
反変:引数の型に使われる
非変
phpでは7.4から共変と反変がサポートされた
https://www.php.net/manual/ja/language.oop5.variance.php
戻り値が共変
子クラスのメソッドが、親クラスの戻り値よりも、より特定の、狭い型を返すことを許す
引数が反変
子クラスのメソッドが、親クラスのものよりも、より抽象的な、広い型を引数として受け入れることを許す
Scala
標準ライブラリの1引数関数の型trait Function1[-T, +R]もそうなっている
Scalaの型パラメータの変位指定