java方法重载
首先看一段代码:都是计算x+y的值,三个方法功能都一样,名字不一样。
但是他的缺点是:程序员需要记住每个名字。
public class TestLoad01 { public static void main(String[] args) { int x = sumInt(10,20); System.out.println(x); long y =sumLong(10L,20L); System.out.println(y); double z = sumdouble(10.0,20.0); System.out.println(z); } public static int sumInt(int x, int y){ return x+y; } public static long sumLong(long x, long y){ return x+y; } public static double sumdouble(double x, double y){ return x+y; } }
方法重载机制,解决之前的缺点:
优点1:代码整齐美观
优点2:功能相似的,可以让方法名相同,更易于以后代码的编写,程序员只需要记住一个就可以。
public class TestLoad01 { public static void main(String[] args) { int x = sum(10,20); System.out.println(x); long y =sum(10L,20L); System.out.println(y); double z = sum(10.0,20.0); System.out.println(z); } public static int sum(int x, int y){ System.out.println("int求和"); return x+y; } public static long sum(long x, long y){ System.out.println("Long求和"); return x+y; } public static double sum(double x, double y){ System.out.println("double求和"); return x+y; } }
所以,方法重载的定义就是,在同一个类中,方法名字相同,所传的参数类型不同,或者参数数量不同,或者位置不同,实现功能相似,这种叫做方法的重载。
比如以下:
public static int sum(int x, int y){ System.out.println("int求和"); return x+y; } public static long sum(long x, long y){ System.out.println("Long求和"); return x+y; } public static double sum(double x, double y){ System.out.println("double求和"); return x+y; } public static double sum(double x, double y,double z){ System.out.println("double求和"); return x+y+z; } public static double sum(double y, double x, int z){ System.out.println("double求和"); return x+y+z; }
但是以下两个不是方法重载:因为,类型一样,那么调用的时候,就会报错,不知道调用哪个,这个是方法的重复了。也不是靠返回值的类型,只是靠的是名字和参数。
public static double sum(double x, double y,double z){
System.out.println("double求和");
return x+y+z;
}
public static double sum(double y, double x, int z){
System.out.println("double求和");
return x+y+z;
}
注意:方法重载和方法“返回值类型”无关
方法重载和方法的修饰符列表无关