重载的概述
重载是让类以统一的方式处理不同类型数据的一种手段。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法。
方法的重载是指在一个类中的多个方法,方法名相同,参数类型不同。
重载是指我们可以定义一些名称相同的方法,通过定义不同的参数来区分这些方法,然后再调用时,Java虚拟机就会根据不同的参数列表来选择合适的方法执行。也就是说,当一个重载方法被调用时,Java用参数的类型或个数来决定实际调用的重载方法。因此,每个重载方法的参数的类型或个数必须是不同。
需要注意的是:识别方法之间是否是重载关系,只看方法名和参数,跟返回值无关。
重载的作用
1. 方法重载的主要好处就是不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。如果我们使用reflector去查看微软写的.net的基类库的话,我们可以发现他使用很多的方法重载,这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。重载比if...else要优雅,减少了if...else部分的代码。
2. 重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。
重载的使用
用一个例题可以明显的看懂:算长方形和圆形的面积。
这个题中要求的都是面积,但是算长方形需要两个参数,长和高。算圆形只需要一个数据半径。
而且计算圆形面积时需要乘以3.14所以需要将参数定义为double类型。
Scanner sc = new Scanner(System.in); System.out.println("请输入数字"); int sum=sc.nextInt(); double jj=max(sum); System.out.println(jj); } public static int max(int a,int b) { return a*b; } public static double max(double a) { return a*a*3.14; }
当你输入的数据只有一个时,只会调用计算圆形面积的方法,不会去使用长方形的方法产生影响。
Scanner sc = new Scanner(System.in); System.out.println("请输入数字"); int sum=sc.nextInt(); int su=sc.nextInt(); double jj=max(sum,su); System.out.println(jj); } public static int max(int a,int b) { return a*b; } public static double max(double a) { return a*a*3.14; }
当输入的数据有两个时,只会调用计算长方形面积的方法不会去使用圆形。