首页 异常处理+抽象类+接口

异常处理+抽象类+接口

淚 · 彦 2018-10-19 0 470

 有关finally语句块说法正确的是(

正确答案: A B C D  

不管catch是否捕获异常,finally语句块都是要被执行的

try语句块或catch语句块中执行到System.exit(0)直接退出程序

finally块中的return语句会覆盖try块中的return返回

finally 语句块在 catch语句块中的return语句之前执行

 

 结论:

1、不管有木有出现异常,finally块中代码都会执行;

2、当trycatch中有return时,finally仍然会执行;

3finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;

4finally中最好不要包含return,否则程序会提前退出,返回值不是trycatch中保存的返回值。

举例:

情况1try{} catch(){}finally{} return;

显然程序按顺序执行。

情况2:try{ return; }catch(){} finally{} return;

程序执行try块中return之前(包括return语句中的表达式运算)代码;

再执行finally块,最后执行tryreturn;

finally块之后的语句return,因为程序在try中已经return所以不再执行。

情况3:try{ } catch(){return;} finally{} return;

程序先执行try,如果遇到异常执行catch块,

有异常:则执行catchreturn之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,

最后执行catch块中return. finally之后也就是4处的代码不再执行。

无异常:执行完tryfinallyreturn.

情况4:try{ return; }catch(){} finally{return;}

程序执行try块中return之前(包括return语句中的表达式运算)代码;

再执行finally块,因为finally块中有return所以提前退出。

情况5:try{} catch(){return;}finally{return;}

程序执行catch块中return之前(包括return语句中的表达式运算)代码;

再执行finally块,因为finally块中有return所以提前退出。

情况6:try{ return;}catch(){return;} finally{return;}

程序执行try块中return之前(包括return语句中的表达式运算)代码;

有异常:执行catch块中return之前(包括return语句中的表达式运算)代码;

则再执行finally块,因为finally块中有return所以提前退出。

无异常:则再执行finally块,因为finally块中有return所以提前退出。

最终结论:任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。

如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,

编译器把finally中的return实现为一个warning

  

Java7特性中,abstract classinterface有什么区别。

正确答案: A B D  

A】抽象类可以有构造方法,接口中不能有构造方法

B】抽象类中可以有普通成员变量,接口中没有普通成员变量

C】抽象类中不可以包含静态方法,接口中可以包含静态方法

D】一个类可以实现多个接口,但只能继承一个抽象类。

 

下面比较一下抽象类和接口的语法区别: 

1.抽象类可以有构造方法,接口中不能有构造方法。 

2.抽象类中可以有普通成员变量,接口中没有普通成员变量 

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 

4. 抽象类中的抽象方法的访问类型可以是publicprotected和(默认类型,虽然 

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。 

5. 抽象类中可以包含静态方法,接口中不能包含静态方法 

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。 

7. 一个类可以实现多个接口,但只能继承一个抽象类。  

 接口中可以有带方法体的方法。(Java 1.8)

分享本文至:
免责声明:本文仅代表作者个人观点,与本网站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
作者: 淚 · 彦 本文最后编辑于2018-10-19 05:17:57
淚 · 彦

若一切皆善,便一切皆美

作者的微博

发表评论: