zoukankan      html  css  js  c++  java
  • 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、方法重载与修饰符列表无光

    如有错误欢迎指出

  • 相关阅读:
    【CV论文阅读】Detecting events and key actors in multi-person videos
    2020意大利数学奥林匹克 第6题
    2020最终数学杯 初级组第3题
    地球上的最短距离
    钱学森做过的趣题
    第35届IMO预选题(瑞典提供)
    第55届IMO 第2题
    第四十届(1999年)IMO 第3题(白俄罗斯供题)
    2019年多瑙河数学竞赛(高中组) 第三题
    2020环球城市春季赛 O级别 高级组 第2题
  • 原文地址:https://www.cnblogs.com/EastOfTheEnd/p/13346577.html
Copyright © 2011-2022 走看看