try catch finally
try-with-resources
JDK7+资源释放方式。
注意点:当声明的资源多于一个时,多个资源用分号( ; )分隔,资源对象一定要显示申明变量。 用分号分隔的列表指定多个资源很重要,因为try -with-resources语句将不支持(不会自动关闭)未以此方式声明的任何候选资源。
最有可能的错误是:
- “嵌套”“资源”的实例化,而不是显式地实例化每个变量的局部变量,而在每个实例化之间不使用分号。
- API连写,没有申明中间变量,而中间API产生的资源类型对象无法关闭。
try、catch、finally带return的执行顺序总结
- finally中的代码总会被执行。
- 当try、catch中有return时,也会执行finally。return的时候,要注意返回值的类型,是否受到finally中代码的影响。
- finally中有return时,会直接在finally中退出,导致try、catch中的return失效
注:catch中return与try中一样,会先执行return前的代码,然后暂时保存需要return的信息,再执行finally中的代码,最后再通过return返回之前保存的信息。注意如果return的是个对象,finally对对象修改是会影响到return结果的。
extends
**super()**
子类的构造方法和父类构造方法,是父类先执行的,并且子类写不写super()
效果是一样的且super()
必须放在子类构造方法第一行。
那么我们还有必要写super()
吗?这个语法还有存在的必要吗?
如果只是无参super()
的话,可写可不写;super方法的作用是调用父类构造方法时候可以控制调用其他带参的构造方法。另外super.xx()
可以调用父类的非私有属性方法
子类覆重写父类方法
子类重写父类方法后,输出顺序如下,说明重写和构造方法不一样不会都执行,且仅执行离自己最”近”的重写方法,即如果Son
没有重写lala()
,那么执行的就是Father
的lala()