关于java语言中子类抛出的异常要小于父类抛出的异常的说明

package com.atguigu.java;

import java.io.FileNotFoundException;
import java.io.IOException;
//子类重写父类的方法时抛出的异常大小不能比父类的异常大
//代码原理如下
//
public class TestOverride {
public static void main(String[] args) {
A a=new B();
try {
a.method1();
/*在编译过程中,此时可以认为引用的是父类A的method1()方法,
* 因此此时会抛出IO异常,在catch语句中进行处理
* 在运行的时候,此时引用的是子类B的method1()方法,
* 会抛出FileNotFoundException异常,但catch中的异常处理IO异常包括了
* FileNotFoundException异常,相当于把FileNotFoundException异常也处理了
* 因此程序能够运行
*
* 如果此时反过来,也就是说父类A抛出的异常是FileNotFoundException
* 子类B抛出的异常是IOException,由于catch中处理的是 FileNotFoundException异常
* 那么在运行的时候,IOException将无法解决,就会出现错误,本人认为这个与面向对象的多态性冲突
* 所以才有“子类重写父类的方法时抛出的异常大小不能比父类的异常大”规定
* */
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class A{
public void method1() throws IOException{

}

}
class B extends A{
public void method1() throws FileNotFoundException{

}

}

//第一次写,但是以后也会一直坚持着写,就当做是对所学知识点的一个总结归纳吧。
还请各位大佬多多指教

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值