Java学习随笔之磨刀篇——方法重载

方法重载的简单介绍

//参考资料来自网站:https://www.bilibili.com/video/BV1Rx411876f?p=98

方法即为C语言中的函数。

方法重载的引入

我们先来看下面的例子:

 

public class Test01
{
    public static void main(String[] arge)
    {
        int result1=sumInt(10,20);
        System.out.println(result1);

        double result2=sumDouble(10.0,20.0);
        System.out.println(result2);

        long result3=sumLong(10L,20L);
        System.out.println(result3);
    }
    public static int sumInt(int a,int b)
    {
        return a + b;
    }
    public static double sumDouble(double a,double b)
    {
        return a + b;
    }
    public static long sumLong(long a,long b)
    {
        return a + b;
    }
}

 

运行结果为:

30
30.0
30

从上面的结果不难看出:

  1、sumInt、sumDouble和sumLong三个为不同的方法,但处理内容相似都是求和。

  2、功能相似的方法,分别启了三个不同的名字,对于程序员来说,难以记忆。

  3、代码不美观。

  功能虽然不同,但是功能相似的时候,有没有这样一种机制,可以让程序员使用这些方法的时候就像在使用一个方法一样,这样程序员以后编 写代码比较方便,也不需要记忆更多的方法名,代码也会很美观。这样的方法就叫做重载/overlord

方法重载

对上面的例子用重载的姿势来一次,代码如下:

public class overlord01
{
    public static void main(String[] arge)
    {
        System.out.println(sum(10,20));
        System.out.println(sum(10.0,20.0));
        System.out.println(sum(10L,20L));
    }
    public static int sum(int a,int b)
    {
        System.out.println("sum(int,int)");
        return a + b;
    }
    public static double sum(double a,double b)
    {
        System.out.println("sum(double,double)");
        return a + b;
    }
    public static long sum(long a,long b)
    {
        System.out.println("sum(long,long)");
        return a + b;
    }
}

运行后结果如下

sum(int,int)
30
sum(double,double)
30.0
sum(long,long)
30

从此可以轻松看出:

  1、程序员在使用重载调用方法时,调用的方法名相同,就感觉在使用一个方法一样。但本质上属于不同的方法。

  2、程序员不需要记忆更多的方法名。

  3、代码变得美观。

重载的使用方法

什么时候需要使用重载呢?

  方法实现的功能相似的时候使用,尽可能让方法名相同。(注:功能不同/不相似的时候,不要让方法名不同。)

重载具体调用哪个方法呢?

  对应调用的方法根据参数数据类型进行判断。如在程序overlord01程序中,sum(10,20)中,参数类型为int型,对应调用的方法为public static sum(int a,int b)。同理sum(10.0,20.0)中参数类型为double,对应调用的方法为public static sum(double a,double b)。

满足什么条件构成了方法的重载?

  1.在同一个类中

  2.方法名相同

  3。参数列表不同:

    -数量不同

    -顺序不同

    -类型不同

结合上面的介绍,请各位判断一下下面哪些可以构成重载,哪些不能

 

public class overlord02
{
    public static void test(){}
    public static void test(int a){}

    public static void test1(int a ,double b){}
    public static void test1(double b,int a){}

    public static void test2(int x){}
    public static void test2(double y){}

    public static void test3(int a,int b){}
    public static void test3(int b,int a){}

    public static void test4(){}
    public static int test4(){}

    void test5(){}
    public static void test5(){}
}

 

...

...

...

...

...

...

答案如下,你答对了吗?

public class overlord02
{
    //可以重载
    public static void test(){}
    public static void test(int a){}
    //可以重载
    public static void test1(int a ,double b){}
    public static void test1(double b,int a){}
    //可以重载
    public static void test2(int x){}
    public static void test2(double y){}
    //不可以重载
    public static void test3(int a,int b){}
    public static void test3(int b,int a){}
    //不可以重载
    public static void test4(){}
    public static int test4(){}
    //不可以重载
    void test5(){}
    public static void test5(){}
}

重载与什么有关系,和什么没关系?

 

  1、方法重载与方法名和参数列表有关系

  2、方法重载与返回值类型无关

  3、方法重载与修饰符列表无光

 

 

如有错误欢迎指出

 

posted @ 2020-07-20 18:25  世尽之东  阅读(117)  评论(0编辑  收藏  举报