一、方法的重载 (Overload)
1、前提条件
在同一个类中,如果“功能1”和“功能2”它们的功能相似,可考虑让它们的方法名相同
但是,对于功能不同或不相似,尽可能让方法名不相同。
怎么区分类中的不同方法?
首先java编译器会通过方法名进行区分,但在java中允许方法名相同的情况出现,方法名相同的情况下,编译器会通过方法的参数(类型和个数) 对方法进行区分
2、概念
方法重载是指在同一个Java类中,定义多个同名的方法,方法参数不同,包括参数的类型和个数都不同。
优点:代码既整齐美观,又便于后期的编写。(容易记忆,方便使用。)
3、🔺满足条件
(1) 在同一个类中
(2) 方法名相同
(3) 参数列表不同
① 参数的个数
② 参数的类型
③ 参数的顺序
只要同时满足以上三个条件,就可认定方法与方法之间发生了方法的重载。
"栗子1"
package javabasis;
/* 重载机制满足条件
* 1、在同一个类中
* 2、方法名相同
* 3、参数列表不同 (个数、类型、顺序)
*/
public class OverloadDemo {
public static void main(String[] args) {
// 参数的个数不同算不同
add(); // 无参数
add(10); // 带一个整型参数10
// 参数的类型不同算不同
int result1 = getSum(10, 20);
System.out.println(result1); // 30
double result2 = getSum(1.5, 2.8);
System.out.println(result2); // 4.3
// 参数的顺序不同算不同
double result3 = getMult(5, 6.2);
System.out.println(result3); // 31.0
double result4 = getMult(4.2, 2);
System.out.println(result4); // 8.4
}
// 定义一个无参数,无返回值的add()方法
public static void add(){
System.out.println("无参数");
}
// 重载以上方法 (参数的个数不同),带有一个整型参数,无返回值
public static void add(int a){
System.out.println("带一个整型参数" + a);
}
// 定义一个带有两个整型参数,有返回值的getSum()方法
public static int getSum(int x, int y){
return x + y;
}
// 重载以上的方法 (参数的类型不同),带有两个浮点型的参数,有返回值
public static double getSum(double x, double y){
return x + y;
}
// 定义一个带有两个参数(一个为整型,一个为浮点型),有返回值的getMult()方法
public static double getMult(int a, double b){
return a * b;
}
// 重载以上的方法 (参数的顺序不同),带有两个参数(一个为整型,一个为浮点型),有返回值
public static double getMult(double a, int b){
return a * b;
}
}
4、🔺影响因素
方法的重载和方法名和参数(个数、类型、顺序)有关
方法的重载和修饰符列表和返回值类型无关
5、经典例子
在Java源码src.zip中,PrintWriter.java就是典型的使用方法重载机制
![](https://i-blog.csdnimg.cn/blog_migrate/11625ac5a803e1c6f8e8e172328399f7.png)