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