例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.子类中方法抛出的异常范围要小于等于父类中方法抛出的异常的范围