以下代码不使用“方法重载”,不使用overload,分析程序存在的缺点
public class OverloadTest01 { // 入口 public static void main(String[] args){ int result1 = sumInt(1, 2); System.out.println(result1); double result2 = sumDouble(1.0, 2,0); System.out.println(result2); long result3 = sumLong(1L, 2L); 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; } }
缺点:
sumInt、sumDouble、sumLong方法虽然功能不同,但功能相似【求和】
代码不美观,影响阅读,对以后维护造成不便
解决:使用 Sun 公司提供的【方法重载/overload】机制,仅限功能相似
体验方法重载:
public class OverloadTest01 { // 入口 public static void main(String[] args){ System.out.println(sum(1, 2)); System.out.println(sum(1.0, 2.0)); System.out.println(sum(1L, 2L)); } public static int sum(int a, int b){ System.out.println("sum(int)") return a + b; } public static double sum(double a, double b){ System.out.println("sum(double)") return a + b; } public static long sum(long a, long b){ System.out.println("sum(long)") return a + b; } }
可以看到,使用方法重载,此时区分方法不再依靠方法名,依靠参数的参数数据类型
参数的类型不同,对应调用的方法不同
使用方法重载,注意区分功能的相似度,功能有明显区别应该以不同名称命名,避免触发方法重载
方法重载:
方法重载又被称作:overload
什么时候能使用方法重载?
什么条件构成方法重载?
方法重载和什么有关系,和什么没关系?
public class OverloadTest02{ public static void main(String[] args){ U.p(10); U.p(false); U.p('a'); U.p("hello World"); U.p(3.0); } } class U{ public static void p(byte b){ System.out.println(b); } public static void p(short b){ System.out.println(b); } public static void p(int b){ System.out.println(b); } public static void p(long b){ System.out.println(b); } public static void p(float b){ System.out.println(b); } public static void p(double b){ System.out.println(b); } public static void p(boolean b){ System.out.println(b); } public static void p(char b){ System.out.println(b); } public static void p(String b){ System.out.println(b); } }