`public int add(int a, int b)` 和 `public void add(Integer a, Integer b)` 为什么不是方法重载?

`public int add(int a, int b)` 和 `public void add(integer a, integer b)` 为什么不是方法重载?

public int add(int a, int b) 与 public void add(Integer a, Integer b) 的关系

在同一类中定义了两个名为 add 的方法,分别接受两个 int 型参数和两个 Integer 型参数。许多程序员可能会将其视为方法重载。然而,情况并非如此。

为什么不算是重载

方法重载的要求之一是参数类型必须不同。在此示例中,两个方法的参数类型都是 int Integer。虽然 Integer int 的包装类,但它们在编译器看来被视为不同的类型。

其次,编译器会优先查找具有匹配参数类型的基本数据类型方法。这意味着在调用 add(int a, int b) 方法时,编译器将始终找到并执行此方法,即使还存在 add(Integer a, Integer b) 方法。

此外,如果两个方法都返回 int 类型,则编译器会将它们视为相同的方法,即使它们的输入参数不同。这是因为编译器在编译时将 Integer 转换为 int

因此,public int add(int a, int b) 和 public void add(Integer a, Integer b) 不是重载方法,而是两个不同的方法,它们根据参数类型和返回值而被调用的优先级不同。

以上就是`public int add(int a, int b)` 和 `public void add(Integer a, Integer b)` 为什么不是方法重载?的详细内容,更多请关注其它相关文章!