Java学习之重载及其作用
1.含义
在Java中,如果有功能类似,可以使用相同的名字来定义不同功能方法
不同功能: 主体功能相同,参数不同
参数不同: 数量、类型、顺序不同(满足其一即可)
2.作用
调用函数的时候,根据参数表可以自动调用对应的函数。因此不用为了对不同的参数类型或参数个数,而写多个函数。
1.基本类型的重载
class Operate{
void operate(int i){}//整型
void operate(double i){}//浮点型
void operate(String i){}//字符型
void operate(long i){}//长整型
}
通过这个类,能够准确找到对应基本类型相应的operate()方法。
但是如果参数类型无对应的方法时,会发生类型升级
类型升级: 当无法精准找到对应的方法时,可以允许提升数据类型,来找到最合适的方法执行。
例如Operate.operate(char a) 参数类型为char,就会直接把char类型转换为int类型,调用operate(int i)方法。
类型升级的原则:
char/short --> int
int --> long/float/double
long --> float/double
float -->double
即: 类型小,无匹配方法,先变大再匹配;类型大,先缩小再匹配。
注意: 类型大,只能手动去强制降级,数据的值可能发生变化,但是编译器不报错。
2.方法重载
在Java中,同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载(method overloading)。
举例:
public class Example {
//一个普通得方法,不带参数,无返回值
public void add(){
//主体
}
//重载上面的方法,并且带了一个整形参数,无返回值
public void add(int a){
//主体
}
//重载上面的方法,并且带了两个整型参数,返回值为int型
public int add(int a,int b){
//主体
return 0;
}
}
总结:
1.方法名称必须相同。
2.参数列表必须不同。
3.方法的返回类型可以相同也可以不同。
4.仅改变方法的返回类型不是方法的重载。
注意事项:
1.声明为final的方法不能被重载。
2.声明为static的方法不能被重载。