java继承或实现方法时异常和返回值的类型范围

之前写代码,有遇到一个方法在父类抛异常(class T)、子类不抛异常(class T1),或者在父类不抛异常(class T)、子类抛异常的场景(class T2);

还有是返回值类型在父类是类型T(class T)、在子类是T的子类T1(class T3),或者返回值类型在父类是类型T的子类T1(class T)、在子类是T(class T4)。

class T {
   public void f1() throws Exception {}
   public void f2() {}
   public T f3() {return null;}
   public T1 f4() {return null;}

    public void f5() throws IOException {}
}
class T1 extends T {
   public void f1() {}
}
class T2 extends T {
   public void f2() throws Exception {}
}
class T3 extends T {
   public T1 f3() {return null;}
}
class T4 extends T {
   public T f4() {return null;}
}

class T5 extends T {
    public T f5() throws Exception {}
}

class T6 extends T {
    public void f1() throws IOException {}
}

class T7 extends T {
    public T f1() throws Exception {}
}

测试可见T2和、T4、T5、T7代码错误。


具体有哪些规则?想一下可以知道,在调用一个对象T的方法时,会处理方法的返回值和异常,

如果T的子类的这个方法的返回值或异常的范围变大了【比如原本没异常的有异常了(class T2)、原本只处理异常E但现在成E的父类了(class T5)、返回值原本没有而现在有了(class T7)、返回值原本是子类现在成父类了(class T4)】,原来调用的地方就不能处理这些多余异常和返回值。

像RuntimeException这种则能随便加,因为默认是处理了这种异常的。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值