考慮以下幾點超載:
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:這就是區分重載和彼此的區別。但這只是決定它們首先是超載的名稱。 –