final关键字的主要作用
1、修饰变量:被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
2、 修饰方法:该方法不可被子类重写。但是可以被重载!
3、 修饰方法:该不可被子方法类重写。但是可以被重载!
需要我们注意的一点是,由于final变量获得初始值之后不能被重新赋值,因此final修饰成员变量和修饰局部变量时有一定的不同。
final成员变量
对于final修饰的成员变量而言,一旦有了初始值,就不能被重新赋值,如果一直没有指定初始值,那么这些成员变量将一直是系统默认分配的0、‘\u0000’、false或null,这些成员变量也就完全失去了存在的意义。因此java语法规定:final修饰的成员变量必须由程序员显示地指定初始值。通俗点说就是定义就得赋值。
final局部变量
系统不会为局部变量进行初始化,局部可以在变量必须由程序员式初始化,因此使用final局部变量时,既可以定义时指定默认值,也可以不指定。如果定义时未指定默认值,则后面对该变量赋初始值,但只能一次,不能重复赋值。