关于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;
        }
    }
}

以上就是方法的重载,其实还是比较简单的,重载不限数量,但是一定要按照规则去区分好😀。