final 关键字:
final 的作用: 相当于使修饰的变量方法或类固定最终化, 使得修饰的变量方法类不能再做改变可以限制继承的重写
final 可以修饰类方法变量
final 修饰的类不可以被继承
final 修饰的方法不可以被覆盖 (重写)
final 修饰的变量是一个常量, final 修饰的变量必须显式初始化, 并且只能初始化一次初始化手段可以是直接声明并赋值, 也可以在初始化代码块中或构造函数中赋值, 或者形式参数传参
final 不能跟 abstract interface 等共存, 因为 final 修饰的类不能被继承重写
final 修饰引用变量: 可以修改内部数据, 但不能修改指向的对象
补充:
内部类如果要使用局部变量, 只能访问被 final 修饰的局部变量:
局部变量的生命周期与内部类不同, 当局部变量被 final 修饰的时候, 这个被 final 修饰的变量就变成了内部类中的数据成员
(Java 采用了一种 copy local variable(复制局部变量) 的方式来实现, 也就是说把定义为 final 的局部变量拷贝过来用, 而引用的也可以拿过来用, 只是不能重新赋值从而造成了可以 access local variable(访问局部变量) 的假象, 而这个时候由于不能重新赋值, 所以一般不会造成不可预料的事情发生)
来源: http://www.bubuko.com/infodetail-2537841.html