一.什么是方法重载?
方法重载就是两个或多个方法的方法名相同,但是方法的形参类型,数量,顺序不同。
上面提到的三点也就是一个方法的特征标,只要有一点不相同,则该方法就不相同,就可以实现重载。
在这里的重点是:实参与形参的匹配问题:
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