final、finally和finalize的区别

  • Post author:
  • Post category:其他



1、

final



(1)



final

一般用于声明属性、方法和类的。声明属性表示属性

是不可变的;声明方法表示方法不可覆盖的;声明类表示 类不可被继承的(也就是不能有子类);


(2)



final

属性:被


final


修饰的变量不可变(


1


、引用不可变;

2

、对象不可变)。


(3)



final

方法:如果这个方法被


final


所声明,则这个方法不

允许任何子类重写这个方法,但是子类可使用这个方法;

一种被称为内联(

inline

)机制:当调用一个被声明为


final

的方法时,直接将方法体插入到调用处,并不是进行方法 调用。


(4)



final

参数:被


final


声明的参数在这个函数内部是不允许

修改的。


(5)



final

类:被


final


声明的类是不能被继承的,并且所有的

方法是不能被重写的。但是并不能表示此类的成员变量不

可变的,如果想让

final

类的成员变量也不可变,则需要给


成员变量也增加

final

修饰。



2




finally






1

)、


finally


一般作为异常处理的一部分,只能用在


try\catch




是句中,附带一个代码块,表示这段语句最终一定会执行

(不管程序有没有一场出现,

finally

中的代码在程序的最

终一定会被执行的,这样可以保证在任何情况下数据库的 连接资源都可以被释放)。



3




finalize






1

)、


finalize





object


类的一个方法,在垃圾回收器执行时会调


用被回收对象的

finalize

()方法,可以覆盖次方法对其他

资源的回收。例如:关闭文件。





2

)、一旦垃圾回收器准备好释放对象占用的空间时,将首先调




finalize

()方法,并且在下一次垃圾回收动作发生时,

才会真正的回收对象占用的内存。



4




JDK


中被


final


修饰的类、


String





StringBuffer


等类是不能被继承的。




版权声明:本文为Warpar原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。