MST

星途 面试题库

面试题:Java多态中重写方法异常处理规则之基础考察

在Java多态场景下,父类方法声明抛出IOException,子类重写该方法时,请问可以抛出哪些类型的异常?请简要说明理由。
44.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

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