java当中throws子句在继承当中overrride时有什么规则?

8.throws子句在继承当中overrride时的规则 马克-to-win:当子类方法override父类方法时,throws子句不能引进新的checked异常。换句话说:子类override方法的throws子句checked异常不能比父类多。马克-to-win:上面一条是死语法规定,但是为什么Sun公司有这样的规定?这主要是为客户的主调代码着想。比如(父类)动物,(子类)狗,(子类的子类)哈巴狗,都有call这个方法。马克-to-win:当我客户的主调方法中某一时刻写了一个兼容代码test(见下面的例子),假如语法上子类可以随意引进新异常,我客户这段主调代码就会报错了。参考下例:

例:1.8.1
import java.io.IOException;
class Animal{
void call() throws IOException
{
System.out.println("Animal");
}
}
class Dog extends Animal{
void call() throws IOException
{
System.out.println("Dog");
}
}
class Collie extends Dog{
void call() throws IOException
{
System.out.println("Collie");
}
}
class CallerMark_to_win {
/*马克-to-win:如果java语法允许Collie比Dog多一个ABC异常的话,下面的catch也必须得捕获ABC这个异常或加throws子句,这样的话, 代码就无法编写了,谁知道将来你的子类再加进什么异常?马克-to-win:我的这段代码如何能做到兼容所有的类?但是现在Sun公司规定,子类的异常不能多于父类,我写的代码从异常角度来讲就没问题了,换句话说就兼容了*/

。。。。。。。。。。。。。。。。。
详情请进: http://www.mark-to-win.com/JavaBeginner/JavaBeginner5_web.html#throwsInInheritanceOverride
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mark_to_win

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值