什么是final
final意思是最终的、不可更改的,也就是说这个关键字所修饰的变量、方法、类都是不可修改的。
为什么要有final
有时候我们需要一个永不改变的编译时常量(比如说Π:3.1415)或者一个在运行时被初始化后就不希望再改变的值。
还有最重要的一点:有效的“关闭”动态绑定,即多态。
怎么用final
常用情况:
final可以修饰变量、方法和类
1、当final修饰变量时
若此变量为基础类型,此变量变为常量,只能被赋值一次。
若此变量为对象引用,则引用初始化指向一个对象后,就无法再把它改为指向另一个对象,而对象自己是可以被修改的。
2、当final修饰方法
方法不可以被覆盖。
3、当final修饰类
此类不可以被继承,类中所有方法都隐式指定为final。
其他情况:
1、空白final
空白final是指被声明为final但又未给定初值的域。
无论什么情况,编译器都确保空白final在使用前必须被初始化。
必须在域的定义处或者每个构造器中用表达式对final进行赋值,空白final为final的使用提供了很大的灵活性。
2、final参数
Void test(final T t){
}
这就意味着无法在方法中更改参数引用所指向的对象,这一特性主要用来向匿名内部类传递数据。