Java中的方法重载

一.什么是方法重载?

方法重载就是两个或多个方法的方法名相同,但是方法的形参类型,数量,顺序不同。

上面提到的三点也就是一个方法的特征标,只要有一点不相同,则该方法就不相同,就可以实现重载。

在这里的重点是:实参与形参的匹配问题:

1.由低等级转向高等级

第一个就是类型提升的问题:byte->short->int->long->float->double(在普通的计算byte short char 不会相互转化)

但是char会直接提升为int型不会转化为byte和short

2.由高级转向低级必须要在参数传入时进行强制转化

例子如下:

package com.cjm.inititalize;

/**
 * Java中的 函数重载
 * 
 * @author 小明
 *
 */
public class FunctionOverLoading {
    /*
     * 函数重载形参与实参的类型提升问题
     */
    // ##############################
    public void f1(char x) {
        System.out.println("char");
    }

    public void f1(int x) {
        System.out.println("int");
    }

    public void f1(byte x) {
        System.out.println("byte");
    }

    public void f1(short x) {
        System.out.println("short");
    }

    public void f1(long x) {
        System.out.println("long");
    }

    public void f1(float x) {
        System.out.println("float");
    }

    public void f1(double x) {
        System.out.println("double");
    }

    // #######################################
    public void f2(byte x) {
        System.out.println("byte");
    }

    public void f2(short x) {
        System.out.println("short");
    }

    public void f2(long x) {
        System.out.println("long");
    }

    public void f2(float x) {
        System.out.println("float");
    }

    public void f2(double x) {
        System.out.println("double");
    }

    public void f2(int x) {
        System.out.println("int");
    }

    // ###################################
    public void f3(short x) {
        System.out.println("short");
    }

    public void f3(long x) {
        System.out.println("long");
    }

    public void f3(float x) {
        System.out.println("float");
    }

    public void f3(double x) {
        System.out.println("double");
    }

    public void f3(int x) {
        System.out.println("int");
    }

    // ####################################
    public void f4(long x) {
        System.out.println("long");
    }

    public void f4(float x) {
        System.out.println("float");
    }

    public void f4(double x) {
        System.out.println("double");
    }

    public void f4(int x) {
        System.out.println("int");
    }

    // #######################################
    public void f5(long x) {
        System.out.println("long");
    }

    public void f5(float x) {
        System.out.println("float");
    }

    public void f5(double x) {
        System.out.println("double");
    }

    // #######################################
    public void f6(float x) {
        System.out.println("float");
    }

    public void f6(double x) {
        System.out.println("double");
    }

    // #########################################
    public void textInt() {
        System.out.println("当形参为int型的5时:");
        f1(5);
        f2(5);
        f3(5);
        f4(5);
        f5(5);
        f6(5);
    }

    public void textChar() {
        System.out.println("当形参为字符型时:");
        f1('c');
        f2('c');
        f3('c');
        f4('c');
        f5('c');
        f6('c');
    }
    public void textByte() {
        System.out.println("当形参为byte型的5时:");
        byte b=5;
        f1(b);
        f2(b);
        f3(b);
        f4(b);
        f5(b);
        f6(b);
    }
    public void textLong() {
        System.out.println("当形参为long型的5时:");
        long b=5;
        f1(b);
        f2(b);
        f3(b);
        f4(b);
        f5(b);
        f6(b);
    }
    public static void main(String[] args) {
        FunctionOverLoading f = new FunctionOverLoading();
        f.textByte();
        
        
    }
}

结果如下:

当形参为byte型的5时:
byte
byte
short
int
long
float
当形参为字符型时:
char
int
int
int
long
float
当形参为int型的5时:
int
int
int
int
long
float
当形参为long型的5时:
long
long
long
long
long
float

 

猜你喜欢

转载自www.cnblogs.com/SAM-CJM/p/9314710.html
今日推荐