方法重载的简单介绍
//参考资料来自网站: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、方法重载与修饰符列表无光
如有错误欢迎指出