为什么Java中的逆变参数类型不允许覆盖?
覆盖超类的方法时,Java允许返回类型是协变的。
为什么在重写方法时不允许使用逆变参数类型?
因为这称为重载 。
特别是,返回类型类型可以是协变的,因为在重载时不会考虑它,因此它仍然匹配超类或接口的实现。 重载时会考虑参数。 与Number doSomethingWithNumber(Integer value)
相比,您可以使用Number doSomethingWithNumber(Integer value)
进行优化。
覆盖超类的方法时,Java允许返回类型是协变的。
为什么在重写方法时不允许使用逆变参数类型?
因为这称为重载 。
特别是,返回类型类型可以是协变的,因为在重载时不会考虑它,因此它仍然匹配超类或接口的实现。 重载时会考虑参数。 与Number doSomethingWithNumber(Integer value)
相比,您可以使用Number doSomethingWithNumber(Integer value)
进行优化。