【Java学习日记26】:方法的重载
一、方法重载核心概念
方法重载(Overload):指在同一个类中定义多个同名方法,但这些方法的参数列表必须不同。重载的目的是让同一功能的方法能处理不同类型或数量的参数,提高代码复用性。
二、判断是否构成重载的规则
满足以下任意一个条件即构成重载:
-
参数类型不同
void show(int a) {} void show(double a) {}
-
参数个数不同
void print() {} void print(String s) {}
-
参数顺序不同(类型必须不同才有效)
void test(int a, String b) {} void test(String b, int a) {}
不构成重载的情况:
-
仅返回值类型不同
int getSum() { return 1; } double getSum() { return 1.0; } // 编译报错!
-
仅参数名称不同
void func(String name) {} void func(String address) {} // 编译报错!
三、定义重载方法的步骤
-
明确功能目的:所有重载方法需实现相同核心功能(如“加法”)。
-
统一方法名:使用相同的名称表示相同功能。
-
设计参数差异:通过参数类型、个数或顺序区分方法。
四、代码示例
java
复制
下载
public class Calculator {// 整数加法public int add(int a, int b) {return a + b;}// 小数加法(参数类型不同)public double add(double a, double b) {return a + b;}// 三数加法(参数个数不同)public int add(int a, int b, int c) {return a + b + c;}// 参数顺序不同(类型不同)public String join(String s, int n) {return s + n;}public String join(int n, String s) {return n + s;} }
五、注意事项
-
可变参数与数组:
int...
和int[]
视为相同参数类型,不能重载。 -
自动类型转换:调用时会匹配最精确的参数类型,如
add(2,3)
优先调用add(int, int)
而非add(double, double)
。 -
避免歧义设计:如
test(int, double)
和test(double, int)
在调用test(5,5)
时会导致编译错误。