スーパークラスのメソッドをオーバーライドする場合、Javaでは戻り型を共変にすることができます。
対照的に、メソッドをオーバーライドするときに反変パラメータータイプが許可されないのはなぜですか?
スーパークラスのメソッドをオーバーライドする場合、Javaでは戻り型を共変にすることができます。
対照的に、メソッドをオーバーライドするときに反変パラメータータイプが許可されないのはなぜですか?
それはオーバーロードと呼ばれるからです。
特に、戻り型の型は、オーバーロード時に考慮されないため、共変である可能性があります。したがって、スーパークラスまたはインターフェイスの実装と一致します。オーバーロード時にパラメーターが考慮されます。Number doSomethingWithNumber(Integer value)
と比較して最適化されている可能性がありますNumber doSomethingWithNumber(Number value)
。