学习笔记--Java方法重载

Java方法重载

感受

以下代码不使用“方法重载”,不使用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;
    }
}

缺点:

  1. sumInt、sumDouble、sumLong方法虽然功能不同,但功能相似【求和】

  2. 代码不美观,影响阅读,对以后维护造成不便

解决:使用 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;
    }

}

可以看到,使用方法重载,此时区分方法不再依靠方法名,依靠参数的参数数据类型

参数的类型不同,对应调用的方法不同

使用方法重载,注意区分功能的相似度,功能有明显区别应该以不同名称命名,避免触发方法重载

方法重载使用

方法重载:

  1. 方法重载又被称作:overload

  2. 什么时候能使用方法重载?

    • 功能相似时,尽可能使用
  3. 什么条件构成方法重载?

    • 在同一个类当中
    • 方法名相同
    • 参数列表不同:
      • 数量不同
      • 顺序不同
      • 类型不同
  4. 方法重载和什么有关系,和什么没关系?

    • 方法名+参数列表有关系
    • 返回值类型无关
    • 修饰符列表无关

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);
    }
}




上一篇:DFS+BFS


下一篇:BFS(广度优先搜索)