大佬教程收集整理的这篇文章主要介绍了继承,方法签名,方法重写和throws子句,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
不,这是适当的-一个重写的方法可以更加严格的关于它抛出什么(返回),因为这可以为呼叫者谁有用 知道 在编译的时候,他们将采用覆盖的方法,不希望打扰与不可能发生的异常等,具有了更多限制,而不是更 宽松 了,所以它不能惊喜呼叫者谁 做 通过父声明访问它。
通过类型引用使用重写方法Parent
永远不会违反“可能抛出IOException
” 的约定-缺少异常不会违反约定。反之(如果父母 没有
声明例外,但重写方法确实声明了例外) 将 违反合同。
我的Parent
课是:
import java.io.IOException;
public class Parent {
int x = 0;
public int getX() throws IOException{
if(x<=0){
throw new IOException();
}
return x;
}
}
我在extend
这个类中写一个子类Child
:
public class Child1 extends Parent{
public int getX(){
return x+10;
}
}
注意在 覆盖类中 的 getX 方法时Child
,我已经throws
从方法定义中删除了该子句,现在它导致编译器出现异常行为,这是预期的:
new Parent().getX() ;
不会try-catch
如预期那样将其封闭在一个块中而无法编译。
new Child().getX() ;
编译而不将它封闭在一个try-catch
块中。
但是下面的代码行需要try-catch块。
Parent p = new Child();
p.getX();
就像可以预见的那样,即在运行时多态期间使用父类引用来调用子方法,为什么Java的设计人员在覆盖特定的父类方法时没有强制要求在方法定义中包括throws子句?我的意思是,如果父类方法的定义中包含throws子句,则在覆盖它时,覆盖方法还应包含throws子句,不是吗?
以上是大佬教程为你收集整理的继承,方法签名,方法重写和throws子句全部内容,希望文章能够帮你解决继承,方法签名,方法重写和throws子句所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。