大家好,今天分享一下Java方法的重载
方法的重载就是在一个类当中,有相同的函数名称。但是形参不同的参数
方法重载的规则:
1. 方法名称必须相同。
2. 参数列表必须不同 (个数不同,或者类型不同,或者参数排列顺序不同等)。
3. 方法的返回值可以相同,也可以不相同。
4. 如果只是返回值不同不足以成为方法的重载
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数,参数类型逐个匹配,以选择对应的方式,如果匹配失败,则编译器报错
下面敲代码来说明:
package method;
public class Demo01 {
public static void main(String[] args) { //main方法
int max=max(10,20); //实际参数:(实参)实际调用传递给它的的参数, 这里也是我们定义的两个实际变量,num1=10,num2=20
System.out.println(max);
}
//比大小 比较两个参数的最大值
public static int max(int num1,int num2) { //在这个例子当中,我们定义num1和num2两个参数
int result = 0; //它就是形式参数(形参),是用来定义作用的
if (num1 == num2) { //如果num1 的赋值等于num2,比较真实情况,不是的
System.out.println("num1==num2"); //输出一样的值
return 0; //终止方法
}
if (num1 > num2){ //我们使用if....else语句去变量所赋值的大小 //如果num1 的赋值大于num2,比较真实情况,不是的
result = num1; //返回num1的赋值,即10
}else{ //如果是另外的情况
result = num2; // 返回num2的赋值,即20
}
return result; //返回
//上面的实参给下面的两个两个变量提供了具体的数值,
//接下来下面public当中的方法对数据进行处理
// return result; 会返回这个处理的值,
//进而交给max这个变量,代表的是一个具体的值
}
}
我们使用上篇文章当中的代码来介绍
它的运行结果
改这段代码:
int max=max(10.0,20.0); //程序在这个时候,会报错
运行结果
改动
double max=max(10.0,20.0);
改动
public static double max(double num1,double num2) {
改动
double result = 0;
整体代码
package method;
public class Demo02 {
public static void main(String[] args) { //main方法
double max=max(10.0,20.0); //实际参数:(实参)实际调用传递给它的的参数, 这里也是我们定义的两个实际变量,num1=10,num2=20
System.out.println(max);
}
//比大小 比较两个参数的最大值
public static double max(double num1,double num2) { //在这个例子当中,我们定义num1和num2两个参数
double result = 0; //它就是形式参数(形参),是用来定义作用的
if (num1 == num2) { //如果num1 的赋值等于num2,比较真实情况,不是的
System.out.println("num1==num2"); //输出一样的值
return 0; //终止方法
}
if (num1 > num2){ //我们使用if....else语句去变量所赋值的大小 //如果num1 的赋值大于num2,比较真实情况,不是的
result = num1; //返回num1的赋值,即10
}else{ //如果是另外的情况
result = num2; // 返回num2的赋值,即20
}
return result; //返回
//上面的实参给下面的两个两个变量提供了具体的数值,
//接下来下面public当中的方法对数据进行处理
// return result; 会返回这个处理的值,
//进而交给max这个变量,代表的是一个具体的值
}
}
运行结果:
就解决了这个问题
下面看代码
package method;
public class Demo02 {
public static void main(String[] args) { //main方法
double max = max(10.0, 20.0); //实际参数:(实参)实际调用传递给它的的参数,
System.out.println(max);
}
//比大小 比较两个参数的最大值
public static double max(double num1, double num2) { //在这个例子当中,我们定义num1和num2两个参数,改为double
double result = 0; //改动double //它就是形式参数(形参),是用来定义作用的
if (num1 == num2) { //如果num1 的赋值等于num2,比较真实情况,不是的
System.out.println("num1==num2"); //输出一样的值
return 0; //终止方法
}
if (num1 > num2) { //我们使用if....else语句去变量所赋值的大小 //如果num1 的赋值大于num2,比较真实情况,不是的
result = num1; //返回num1的赋值,即10
} else { //如果是另外的情况
result = num2; // 返回num2的赋值,即20
}
return result; //返回
//上面的实参给下面的两个两个变量提供了具体的数值,
//接下来下面public当中的方法对数据进行处理
// return result; 会返回这个处理的值,
//进而交给max这个变量,代表的是一个具体的值
//比大小
}
//下面是以int类型,写的方法
public static int max(int num1, int num2) { //在这个例子当中,我们定义num1和num2两个参数
int result = 0; //它就是形式参数(形参),是用来定义作用的
if (num1 == num2) { //如果num1 的赋值等于num2,比较真实情况,不是的
System.out.println("num1==num2"); //输出一样的值
return 0; //终止方法
}
if (num1 > num2) { //我们使用if....else语句去变量所赋值的大小 //如果num1 的赋值大于num2,比较真实情况,不是的
result = num1; //返回num1的赋值,即10
} else { //如果是另外的情况
result = num2; // 返回num2的赋值,即20
}
return result; //返回
}
这两个是我们说方法重载的重点:
double max(double num1, double num2)
public static int max(int num1, int num2)
我们可以看见这两行max是方法名,是一样的
我们可以看见这两行括号里的东西是不一样的 ,这就是参数列表,必须要不一样
参数类型不一样,是为了系统识别方法,否则,它就不知道执行那个方法
好了,关于Java方法的重载就讲到这里了,谢谢大家