本篇文章给大家谈谈子类实现接口可以抛异常吗,以及子类抛出异常对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享子类实现接口可以抛异常吗的知识,其中也会对子类抛出异常进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Java:定义接口中的方法时声明了异常,实现这个接口的方法时也需要抛出同样的异常吗?
不需要抛出同样的异常
1. 实现该接口的方法可以不用抛出异常
2. 可以抛出不一样的异常. 但是必须是接口定义的异常的子类
JDK1.8举例说明
import java.io.FileNotFoundException;
import java.io.IOException;
interface A{
void print ()throws IOException;//定义的接口的方法,抛出IO异常
}
public class B implements A {
@Override
public void print() throws FileNotFoundException {//实现方法可以抛出IO异常的子类异常
}
}
class C implements A{
@Override
public void print() throws IOException {//可以抛出一样的异常
}
}
class D implements A{
@Override
public void print() {//可以不抛异常
}
}
子类重写父类的方法,父类没有异常,子类可以抛异常吗?
这就是java的重写规则。
对于异常重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。
重写规则之一:重写方法不能比被重写方法限制有更严格的访问级别。
(但是可以更广泛,比如父类方法是包访问权限,子类的重写方法是public访问权限。) 比如:Object类有个toString()方法,开始重写这个方法的时候我们总容易忘记public修饰符,编译器当然不会放过任何教训我们 的机会。出错的原因就是:没有加任何访问修饰符的方法具有包访问权限,包访问权限比public当然要严格了,所以编译器会报错的。
重写规则之二: 参数列表必须与被重写方法的相同。
重写有个孪生的弟弟叫重载,也就是后面要出场的。如果子类方法的参数与父类对应的方法不同,那么就是你认错人了,那是重载,不是重写。
重写规则之三:返回类型必须与被重写方法的返回类型相同。
父类方法A:void eat(){} 子类方法B:int eat(){} 两者虽然参数相同,可是返回类型不同,所以不是重写。
父类方法A:int eat(){} 子类方法B:long eat(){} 返回类型虽然兼容父类,但是不同就是不同,所以不是重写。
重写规则之四:重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。
注意:这种限制只是针对检查异常,至于运行时异常RuntimeException及其子类不再这个限制之中。
重写规则之五: 不能重写被标识为final的方法。
重写规则之六:如果一个方法不能被继承,则不能重写它。如private方法
java的子类不能抛出比基类更多的异常;ORACLE公司这么设计的理由是什么啊?
一般子类重写的父类的方法不可以抛出比父类方法更多的异常,这个你可以简单的理解下重写的定义
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写
返回值和形参都不可改变,异常其实也可以算是方法的返回值的一种,如果子类方法的异常跟父类方法异常不一致,这个就已经违背了重写的定义
所以子类的异常类型一定不能大于父类
java接口设计中都要声明抛出异常吗
这个是根据实际需求来看的,如果你能肯定实现接口的类都不会抛异常的话,接口就不需要抛异常。
一般情况下接口都是要抛异常的,因为接口是事先写好的,并不知道后面实现接口的类会不会抛异常,如果接口不抛异常,则实现接口的类有异常都没法抛。基于这一点,接口基本上都要跑异常 ,并且最好是抛Exception异常,Exception异常时所有异常的父类,所以实现接口的类无论抛什么异常都没有关系了。当然,如果你仅仅是在学习中写代码,而不是实际开发,也可以不抛。
java父子类重写方法抛出异常问题
ArrayIndexOutOfBoundsException, NullPointerExcetion,ArithmeticException都属于可以不有申明的异常,属基本的异常。换句话说,即使你父子两个类的方法都不申明抛出这几个异常,系统其实也是认为申明了的。
你试试把子类的异常改成个类似于SQLException之类就看出问题所在了。
java线程Threed的子类继承方法和实现接口方法各有什么优势?
实现Runnable接口相对于继承Thread类来说,有如下优势:
1 .适合多个相同代码的线程去处理同一个资源的情况
2.可以避免由于java的单继承特性带来的局限
3.增强了程序的健壮性,代码能够被多个线程共享,代码与数据时独立的
Thread继承的优势:
1. Runnable接口没有抛出异常,那么实现它的类只能是try-catch不能throws。
2. 简单一点,初级选手合适。
关于子类实现接口可以抛异常吗和子类抛出异常的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
子类实现接口可以抛异常吗的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于子类抛出异常、子类实现接口可以抛异常吗的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~