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