8.5. 方法重载(overload)

eg MethodOverloading.java

package com.a51work6;

public class MethodOverloading {
    void receive(int i) {
        System.out.println("接收一个int参数");
        System.out.println("i = " + i);
    }


    void receive(int x, int y) {
        System.out.println("接收两个int参数");
        System.out.printf("x = %d, y =%d \r",x,y);

    }

    int receive(double x, double y ) {
        System.out.println("接收两个double参数");
        System.out.printf("x = %f, y =%f \r",x,y);
        return 0;
    }
}

Helloworld.java

package com.a51work6;

public class Helloworld {
    public static void main(String[] args) {
        MethodOverloading mo = new MethodOverloading();

//      调用void receive(int i)
        mo.receive(1);

//      调用void receive(int x , int y)
        mo.receive(3, 4);

//      调用void receive(double x, double y)
        mo.receive(3.2, 4.1);
    }

}


/*
接收一个int参数
i = 1
接收两个int参数
x = 3, y =4
接收两个double参数
x = 3.200000, y =4.100000
*/

调用哪一个receive是根据参数列表决定的,如果参数类型不一致,编译器会进行自动类型转换寻找适合版本的方法。