标签: java override covariance contravariance
当覆盖超类的方法时,Java允许返回类型是协变的。
为什么在重写方法时允许使用逆变参数类型不?
答案 0 :(得分:16)
因为那叫做overloading。
特别是,返回类型类型可以是协变的,因为在重载时不会考虑它,因此它仍然匹配超类或接口的实现。重载时会考虑参数。与Number doSomethingWithNumber(Integer value)相比,您可能会优化Number doSomethingWithNumber(Number value)。
Number doSomethingWithNumber(Integer value)
Number doSomethingWithNumber(Number value)