为什么Java中的逆变参数类型不允许覆盖?

时间:2012-09-15 17:42:31

标签: java override covariance contravariance

当覆盖超类的方法时,Java允许返回类型是协变的。

为什么在重写方法时允许使用逆变参数类型

1 个答案:

答案 0 :(得分:16)

因为那叫做overloading

特别是,返回类型类型可以是协变的,因为在重载时不会考虑它,因此它仍然匹配超类或接口的实现。重载时会考虑参数。与Number doSomethingWithNumber(Integer value)相比,您可能会优化Number doSomethingWithNumber(Number value)