子类重写父类方法的 2 个范围控制:
1、访问控制权限: 子类中的方法访问权限要大于父类;
2、抛出异常的范围: 子类的方法抛出异常的范围要小余父类;
这两个要求, 均出自于 动态多肽: 父类的引用指向子类的对象;
子类可以向上自动转型为 父类, 不遵守上述规则, 会导致程序的矛盾, 抛出编译时异常;
当子类的方法访问权限 < 父类时, 父类的引用指向子类的对象: 父类允许访问该方法, 实际执行的子类方法不允许;
以何为准?
当子类的方法抛出的异常范围 > 父类时, 父类的引用指向子类的对象: 小范围异常 不能捕获比它更大的异常;
以何为准?
因此, 子类重写制定了上述规范, 异常会在编译时就抛出。