关于java方法的重载
我们在上一篇文章中了解到了方法的定于和引用,本篇文章中,我们来介绍一下方法的重载,这个比较简单好理解,可以反复的定义几个方法来实践一下😉结合上一篇的内容更好理解。
一、方法
我们再来回顾一下两个数比大小的方法。
public class Demo
{
public static void main(String[] args)
{
int result=max(10,20);
System.out.println(result);
}
public static int max(int num1,int num2)
{
int result=0;
if(num1==num2)
{
System.out.println("两个数相等无法比较");
return 0;
}
if(num1>num2)
{
result=num1;
}
else
{
result=num2;
}
}
}
我们运行一下上面的代码,可以得到以下结果
20
二、重载
我们如果想输出一个小数,作为比较的话,会出现错误,因为返回的类型不一样,刚刚上面的方法是int类型的,所以我们可以再定义一个方法去比较小数,直接看代码就可以理解了。
public class Demo
{
public static void main(String[] args)
{
int result=max(10.0,20.0);
System.out.println(result);
}
//两个整型比较大小的方法
public static int max(int num1,int num2)
{
int result=0;
if(num1==num2)
{
System.out.println("两个数相等无法比较");
return 0;
}
if(num1>num2)
{
result=num1;
}
else
{
result=num2;
}
}
//两个小数比较大小的方法
public static double max(double num1,double num2)
{
double result=0;
if(num1==num2)
{
System.out.println("两个数相等无法比较");
return 0;
}
if(num1>num2)
{
result=num1;
}
else
{
result=num2;
}
}
}
我们执行以下代码,就可以得到以下的结果
20.0
我们只是复制了一个一模一样的方法,改了一下返回的类型,其他的什么都没有改,连方法的名字都没有改,程序还是可以正常的运行并且输出结果😎这个就是方法的重载。
三、方法的重载规则
- 重载就是一个类中,有相同的方法名称,但是形式参数不同的方法。
- 方法名称必须相同!!
- 参数列表必须不同!!(个数不同,或者类型不同,参数排序不同等)
- 方法的返回类型可以相同也可以不相同。
这句话的含义就是,我们可以用double方法,返回int类型,可以利用我们之前学习过的类型转换😀
public class Demo
{
public static void main(String[] args)
{
int result=max(10,20);
System.out.println(result);
}
//两个小数比较大小的方法
public static int max(double num1,double num2)
{
double result=0;
if(num1==num2)
{
System.out.println("两个数相等无法比较");
return 0;
}
if(num1>num2)
{
result=(int)num1;
}
else
{
result=(int)num2;
}
}
//两个整数比较大小的方法
public static int max(int num1,int num2)
{
int result=0;
if(num1==num2)
{
System.out.println("两个数相等无法比较");
return 0;
}
if(num1>num2)
{
result=num1;
}
else
{
result=num2;
}
}
}
我们可以看到只有方法括号中的形式参数类型不同,但是用了类型转换,最后返回的结果还是int类型的,这样子也可以构成方法的重载。
- 仅仅返回类型不同不足以成为方法的重载。
四、重载实现的理论
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
public class Demo
{
public static void main(String[] args)
{
int result=max(10,20,30,40);//因为方法中只有两个参数num1,num2,个数无法匹配,编译器会提示错误
System.out.println(result);
}
public static int max(int num1,int num2)
{
int result=0;
if(num1==num2)
{
System.out.println("两个数相等无法比较");
return 0;
}
if(num1>num2)
{
result=num1;
}
else
{
result=num2;
}
}
}
以上就是方法的重载,其实还是比较简单的,重载不限数量,但是一定要按照规则去区分好😀。