final是Java中经常用到的关键字,可以用来修饰类、方法和变量(包括成员变量和局部变量),下面主要从着这三个方面分析final关键字的主要用法。
一.final类
当一个类被final关键字修饰后,就表明这个类不可以被继承了,任何涉及到继承这个类的操作在编译时都会失败。java.lang.String类就是一个final类。可以根据需要将一个类设置为final类,
二.final方法
对于类中的成员也可以定义为final,被定义为final的方法不能被重写。且所有的private方法都隐式地指定为final方法。
定义为final的方法可以使运行时的效率优化,编译器可以产生直接调用方法的代码,从而阻止运行时刻对方法调用的动态联编。
三.final变量
如果类的成员变量被定义为final,则变量一经赋值就不能被改变,所以可以通过声明final变量并同时赋初值来定义常量,有点类似于C/C++里面的constant。
如果在程序中要改变final变量的值,则将产生编译错误。
如果类的final变量在声明时没有赋初值,这种变量也称为空白final。但是无论什么情况,编译器都确保空白final在使用之前必须被初始化。对于空白final,在所属类的每个构造方法中都必须对该变量赋值。
如果未赋值的final变量是局部变量,则可以在所述方法体的任何位置进行赋值,但只可以赋一次值。