继承后Throws该如何声明

A2和A3中方法a可以声明抛出哪几个异常?

interface A0 {
    void a() throws CloneNotSupportedException, IOException;
}

interface A1 {
    void a() throws SQLException, IOException;
}

interface A2 extends A0 {
    void a();
}

interface A3 extends A0,A1 {
    void a();
}

继承关系有一个原则,即在任何一个使用父类对象的地方都可以用子类对象来替换而不影响对象的行为。大致有以下规则
1、父类中的方法(以下简称父方法)抛出的异常,子类中覆写的方法(以下简称子方法)可以不声明。
2、父方法抛出多种异常,子方法可以声明其中的任意一个或多个。
3、子方法可以抛出的异常,可以是父方法抛出的异常的子类。
4、子方法不允许声明父方法没有声明过的异常类型。
5、子方法也不允许声明父方法抛出的异常的父类。

子方法抛出异常范围必须小于父方法。

对于A2,可以不声明,或者声明A0中的一个或多个。
对于A3,由于同时继承了A0和A1,因此可以声明的只有IOException以及其子类。

参照这篇帖子

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值