重載: 方法名稱相同,但是參數必須有區別(參數不同可以使型別不同,順序不同,個數不同)。重寫(又叫覆蓋): 子類別繼承父類別的方法,並重新實作此方法。
方法重寫使用注意事項:
1.方法重寫時,必須有繼承關係
2.方法重寫時,方法名稱與形式參數必須一致。
3.方法重寫時 ,子類別的權限修飾符需要大於或等於父類別的權限修飾符。
4.方法重寫時 ,子類別的回傳值類型必須小於或等於父類別的回傳值型別
5.方法重寫時 , 子類別的異常型別要小於等於父類別的異常型別。
在這裡面主要拿第三點來測試:
public class a{ public static class People { public void fun(){}; } static class Student extends People { protected void fun(){ System.out.println("dfdfd"); } } public static void main(String[] args){ Student p = new Student(); p.fun(); } }
編譯就報錯了,如圖:
原因是父類的方法的權限是public ,而子類改為protected,降低值了權限,所以只能大於或等於如:
public class a{ public static class People { protected void fun(){}; } static class Student extends People { public void fun(){ System.out.println("dfdfd"); } } public static void main(String[] args){ Student p = new Student(); p.fun(); } }
運作成功