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 类型(赋值兼容)相同,则称为重写。向参数添加修饰符不会更改参数类型。所以你的回答是最重要的。
让我们在 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 类型(赋值兼容)相同,则称为重写。向参数添加修饰符不会更改参数类型。所以你的回答是最重要的。