程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了继承,方法签名,方法重写和throws子句大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决继承,方法签名,方法重写和throws子句?

开发过程中遇到继承,方法签名,方法重写和throws子句的问题如何解决?下面主要结合日常开发的经验,给出你关于继承,方法签名,方法重写和throws子句的解决方法建议,希望对你解决继承,方法签名,方法重写和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,请注明来意。