JAVA面试必备基础知识点

第三章、final、finally、finalize的区别

2018-10-21  本文已影响1人  小母牛不生产奶

长头发的不一定是女的,短头发的不一定是男的,这三者除了名字一样外,其他没有半毛钱关系。


1、final修饰符(关键字)

    被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取。被final声明的方法也同样只能使用,即不能方法重写。


说到重写,不得不再提一下,重写和重载的区别,笔者也经常混淆这两者的概念:

同样的方法名,不一样的参数列表,那叫重载

子类里有一个和父类同样的方法名、同样的参数列表、不一样的方法体,那叫重写

final修饰的方法不能被重写,可以被重载。


2、finally是在异常处理时提供finally块来执行任何清除操作

        不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行。finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。


3、finalize是方法名

java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者被执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。(已经不推荐使用,并且在JDK9开始被标记位deprecated

上一篇下一篇

猜你喜欢

热点阅读