final 和 non-final 方法参数,它们在确定方法重载或覆盖时是否被视为不同?

final and non-final method parameters, are they treated as different for determining method overloading or overriding?

让我们在 parent class 中使用此方法:

public void calculateSum(int a, final int b) { }

而 child class 有:

public void calculateSum(int a, int b){ }

那么是方法重载还是方法覆盖?

它是重写的,因为参数的数量和类型是相同的。

重载是指参数的类型或数量发生变化。

方法参数上的 final 只是指示编译器不应在方法内部更改变量值(或引用)...这也会影响运行时,因为最终变量是安全发布的.

子 class 方法正在覆盖父 class 方法。 child class 方法没有定义一组新的参数。 'final' 修饰符不影响参数类型,只要它可以被分配一个新值。

如果方法签名(包括方法名称和参数列表)与 return 类型(赋值兼容)相同,则称为重写。向参数添加修饰符不会更改参数类型。所以你的回答是最重要的。