考虑以下几点超载:
1)第一和重要的规则在Java中重载的方法是改变方法签名。方法签名由参数数量,参数类型和参数顺序(如果它们具有不同的类型)组成。
public class DemoClass {
// Overloaded method
public Integer sum(Integer a, Integer b) {
return a + b;
}
// Overloading method
public Integer sum(Float a, Integer b) { //Valid
return null;
}
}
2)方法的返回类型是从未方法签名的一部分,所以只改变方法的返回类型并不等于方法重载。从方法
public class DemoClass {
// Overloaded method
public Integer sum(Integer a, Integer b) {
return a + b;
}
// Overloading method
public Float sum(Integer a, Integer b) { //Not valid; Compile time error
return null;
}
}
3)抛出的异常超载的方法时,也没有考虑。所以你的重载方法抛出相同的异常,一个不同的异常,或者它不会抛出任何异常;对方法加载没有任何影响。
public class DemoClass {
// Overloaded method
public Integer sum(Integer a, Integer b) throws NullPointerException{
return a + b;
}
// Overloading method
public Integer sum(Integer a, Integer b) throws Exception{ //Not valid; Compile time error
return null;
}
}
是的。重载时,唯一重要的是方法的名称。 –
@JeroenVannevel参数的数量/类型是不同的(并且不兼容)。 – biziclop
@biziclop:这就是区分重载和彼此的区别。但这只是决定它们首先是超载的名称。 –