java中方法重载

Posted 苦海123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中方法重载相关的知识,希望对你有一定的参考价值。

方法重载(OverLoad):

方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

参数列表:个数不同,数据类型不同,顺序不同。

重载方法调用:JVM通过方法的参数列表,调用不同的方法。

优势:用一个方法名可以实现多个不同参数被传递的方法调用,但是参数类型相同的参数个数与方法的参数个数不匹配时就会报错。

/*
* 1.方法重载:在同一个类中定义多个方法名相同且参数个数不同的方法的过程。
* 2.方法重载调用:根据传入的参数个数调用相同参数个数的方法(自动匹配参数相同的方法,匹配不到的话就会报错)。
* 3.参数类型不同或参数类型的顺序不同,即使参数个数相同,也不会报错。
* 4.定义两个以上只是参数名称不同的方法,也是会报错,即不能重载。
* 最后总结:方法重载调用相对应的方法,是根据传入参数的个数、参数类型、参数顺序决定的,与参数名称、返回值的类型、修饰符无关。
* */
package cn.kuhai.www;
public class Overload {
    public static void main(String[] args){
        //2-1-1传入不同个数的参数调用sum方法:
        int result1 = sum(1,2);
        System.out.println(result1);//2-1:int,int 3
        int result2 = sum(1,2,3);
        System.out.println(result2);//2-1:int,int,int 6
        //如果定义的方法中没有与传入参数个数相匹配的方法,那么就会报错,如:
        //int result3 = sum(1,2,3,4);
        //int result3 = sum(1);

        //3-1-1.调用product方法(根据传入参数的类型调用对应的方法):
        System.out.println(product(1,2));//3-1:int,int 2
        System.out.println(product(1,3.0));//3-1:int,double 3
        System.out.println(product(3.0,2));//3-1:double,int 6.0
        System.out.println(product(3.0,3.0));//3-1:double,double 9

        //3-2-1.调用sums方法:
        System.out.println(sums(4,3.0));//3-2:int,double 7.0
        System.out.println(sums(4.0,2));//3-2:double,int 6.0

        //4-1-1.调用say方法:
        System.out.println(say("hello"));//4-1:String hello
    }

    //2-1.定义参数个数不同的两组sum方法:
    public static int sum(int a,int b){
        System.out.println("2-1:int,int");
        return a + b;
    }
    public static int sum(int a,int b,int c){
        System.out.println("2-1:int,int,int");
        return a + b + c;
    }

    //3-1.定义四组参数类型不同的方法sum:
    public static int product(int a,int b){
        System.out.println("3-1:int,int");
        return a * b;
    }
    public static int product(int a,double b){
        System.out.println("3-1:int,double");
        return (int) (a * b);
    }
    public static double product(double a,int b){
        System.out.println("3-1:double,int");
        return a * b;
    }
    public static int product(double a,double b){
        System.out.println("3-1:double,double");
        return (int) (a * b);
    }

    //3-2.定义两组参数顺序不同的方法sums:
    public static double sums(int a,double b){
        System.out.println("3-2:int,double");
        return a + b;
    }
    public static double sums(double a,int b){
        System.out.println("3-2:double,int");
        return a + b;
    }

    //4-1.定义两组参数名称不同的方法say:
    public static String say(String str){
        System.out.println("4-1:String");
        return str;
    }
    //定义仅仅参数名称不同的方法时会报错:
    //public static String say(String saystr){
      //  return saystr;
    //}
}

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

以上是关于java中方法重载的主要内容,如果未能解决你的问题,请参考以下文章

Java 基础语法方法的使用

java基础3-重载+命令行传参+递归+数组+排序

10方法的定义和重载和递归

导航架构片段重载问题

导航架构片段重载问题

JavaSE 方法的使用