面试题答案
一键面试- 可以抛出的异常类型:
- 不抛出异常:子类重写方法时可以选择不抛出任何异常。因为子类重写方法时对异常的抛出更加严格是符合多态规则的。
- 抛出IOException或其子类异常:根据Java重写规则,子类重写方法抛出的异常必须和父类方法抛出的异常一致,或者是父类方法抛出异常的子类。例如可以抛出
FileNotFoundException
,因为FileNotFoundException
是IOException
的子类。
- 理由:
- 这是Java多态和方法重写中关于异常处理的规则。这样规定的目的是保证在多态调用中,调用者(使用父类引用调用子类对象的方法)对异常的处理是一致且可预测的。如果子类可以抛出父类方法声明之外的异常类型,调用者按照父类方法声明的异常进行处理时,可能会出现无法捕获到子类抛出的异常的情况,破坏了多态的一致性和安全性。