例1
1.代碼
public class Demo01 {
public static void main(String[] args) throws Exception {
Parent p = new Child();
p.output();
}
class Parent {
public void output() throws NullPointerException{
System.out.println("parent");
}
}
class Child extends Parent{
public void output() throws Exception{
System.out.println("child");
}
}
}
2問題
- 問上述代碼能否編譯通過?
- 如果可以編譯通過,運行時輸出什麼?
3.分析
- 不能編譯通過,因爲子類的方法拋出的異常類範圍大於了父類方法拋出的異常類範圍
4.關於方法重載的小結
- 1.子類中的方法與父類中的方法有相同的返回類型,相同的方法名稱,相同的參數列表
- 2.子類中的方法訪問級別(
public/protect/private
)要大於等於父類中該方法的訪問級別(子類中的方法訪問限制更低)
- 3.子類中方法拋出的異常範圍要小於等於父類中方法拋出的異常的範圍