Java中的方法過載和重寫(覆蓋)

2021-07-11 17:23:44 字數 1311 閱讀 7456

一. 方法過載(overload)

/*

* 方法過載的判定:同一類中,方法名相同,引數列表不同(引數個數不同,引數列表中對應位置引數型別不同),其他方法返回值

* 和訪問修飾符都隨意。

*/public class overloadtest

// the first situation: the number of param table is different.

public void testfunc(int a, int b){}

// the second situation: the type of param table is different.

// 引數型別不同的意義是說:引數列表對應位置的型別不同,與引數名字沒有任何聯絡,所以在判斷方法過載的過程中

// 不考慮引數順序是否變化。

public void testfunc(int a, float c, int b){}

/** the following function isn't overload

*/// 報錯資訊:duplicate method testfunc(int, int, float) in type overloadtest

// 與第乙個方法重複報錯,因為引數a和b的型別相同,不管是否進行了引數順序的改變,最後在方法記錄的過程中,

// 還是會記錄成上面報錯資訊提示的那樣,而這個引數列表與第乙個函式的引數列表一模一樣。

public void testfunc(int b, int a, float c){}

// 報錯資訊:duplicate method testfunc(int, float, int) in type overloadtest

// 雖然該函式也是交換了引數順序,但是交換的兩個引數型別本來就不同,造成了與方法一的引數列表對應位置型別不同,

// 與方法一沒有造成重複報錯,但是與方法三有造成了重複報錯,應為他們的引數列表都是(int, float, int)。

// 從這裡也可以看出在方法過載的判定中,是不考慮引數名稱的。

public void testfunc(int a, float b, int c){}

}

二. 方法重寫(覆蓋)

方法重寫也叫方法覆蓋,表示子類要對父類的某一方法進行修改,方法的重寫比較簡單,通常遵循以下原則:

1. 兩同:方法名和方法引數列表相同

2. 一大: 子類中的重寫方法的訪問許可權大於等於父類中的方法

3. 二小:子類中的重寫方法丟擲的異常型別要小於等於父類;子類中的重寫方法的返回值型別小於等於父類

Java中覆蓋 重寫 過載詳解

過載 通俗的講就是方法名必須一致,但方法中的引數的狀態不一致!先來看乙個過載的例子 public class overloadtest 方法1 param a param b public static void add int a,int b 方法2 param a param b public ...

方法過載 覆蓋和重寫的區別

過載 overload 過載 在乙個類中,方法名相同,但引數列表不同。對於方法來說,方法名和引數列表共同組成了方法的標識,因此在乙個類中允許存在兩個相同名稱的方法,只要方法的引數列表不完全相同 引數數量或引數型別不同 這時稱該方法具有同名的過載形式,即方法名相同而標識不同。訪問修飾符 可以不相同 返...

過載和覆蓋重寫

過載即在同乙個類中,方法名稱相同,引數列表不同 引數列表的順序不同或者引數列表的個數不同 的方法,稱為過載。public class overloaddemo public overloaddemo string name,int age public overloaddemo string nam...