定义:

①:只和方法名和参数有关;方法名要相同,方法的参数要不同(参数个数,顺序,类型)

②:在同一个类中

例子:

package com.isea.kafka.producer;

public class Test {
    public static void main(String[] args) {
        AA aa = new BB();
        test(aa);
    }
}

public static void test(AA aa){
    System.out.println(\"aaaa\");
}

public static void test(BB bb){
    System.out.println(\"bbbb\");
}


class AA{
}

class BB extends AA{
}

此时打印的是aaaa,因为方法的重载只和方法的名字和参数列表有关系,(使用哪个方法,在编译期间就已经
确定了,但是和方法的重写是在运行的确定的,运行时体现了方法的多态。)这里参数一个,只能看参数的类
型,这里是参数aa是AA类型的,所以会调用第一个test方法。

以上是引用类型的重载,下面是基本类型的重载:

package com.isea.kafka.producer;

public class Test {
    public static void main(String[] args) {
        byte b = 10;
        test(b);
    }

    public static void test(byte b){ // ①
        System.out.println(\"bbbb\");
    }

    public static void test(short d) { // ②
        System.out.println(\"dddd\");
    }

    public static void test(char c) { //③
        System.out.println(\"cccc\");
    }

    public static void test(int i) { // ④
        System.out.println(\"iiii\");
    }
}



①②③④均存在时,使用①,自动匹配为byte类型
②③④存在时,使用②,将8位的byte转为 16位的short更快
③④存在时,使用④,不转为 char类型是因为char类型没有负数。

 

收藏 打印