重载
- 重载就是为了解决下面这种情况:
public int max(int i, int j) {
return i > j ? i : j;
}
public double maxDouble(double i, double j) {
return i > j ? i : j;
}
public double max(double i, double j) {
return i > j ? i : j;
}
- java的重载只和签名有关,方法名相同形参不同,就视为重载;
重载和权限修饰符、static修饰符、返回值无关,这些东西可以相同,也可以不同;
public double max(double i, double j) {
return i > j ? i : j;
}
public void max(double i, double j) {
double d = i > j ? i : j;
}
private void max(double i, double j) {
double d = i > j ? i : j;
}
private static double max(double i, double j) {
return i > j ? i : j;
}
上面这四个方法任意拿出两个方法来都不行,会报错,这不是重载,而是重名;
报错:Duplicate method max(double, double) in type DemoOverLoad,在DemoOverLoad类里有两个完全相同的方法max(double,double);
java里区别方法只看签名,签名相同就视为同一个方法;
这里有歧义性,所以连编译都通不过。