Java 中子类重写时访问控制权限和抛出异常范围的限制

子类重写父类方法的 2 个范围控制:

1、访问控制权限: 子类中的方法访问权限要大于父类;

2、抛出异常的范围: 子类的方法抛出异常的范围要小余父类;

 

这两个要求, 均出自于动态多态: 父类的引用指向子类的对象;

  子类可以向上自动转型为 父类, 不遵守上述规则, 会导致程序的矛盾, 抛出编译时异常;

 

当子类的方法访问权限 < 父类时, 父类的引用指向子类的对象: 父类允许访问该方法, 实际执行的子类方法不允许;

以何为准?

 

当子类的方法抛出的异常范围 > 父类时, 父类的引用指向子类的对象: 小范围异常 不能捕获比它更大的异常;

以何为准?

 

因此, 子类重写制定了上述规范, 异常会在编译时就抛出。

posted @ 2022-03-11 11:36  r1-12king  阅读(513)  评论(0编辑  收藏  举报