原文链接
final用来修饰变量,方法,类。
- final variable:创建常量;
- final methods:阻止方法被重写。
- final class:阻止继承。
Final variables
- 值不能被修改,如果是引用类型的话就代表不能重新指向另一个对象,但是该对象内部的值可以改变。必须被初始化(只能初始化一次),可以在多个位置被初始化。
public class FinalExample {
final int A = 5;//直接初始化
final int B;
final int C;
static final double PI = 3.1415;//直接初始化
static final double D;
{
B = 1;//实例构造代码块内的初始化
}
static {
//C = 1;non-static variable C cannot be referenced from a static context
D = 1.0;//静态变量可以在静态代码块中初始化
}
public FinalExample() {
C = 1;//在构造函数中初始化
}
}
non-transitivity
非传递性:对一个引用变量final保证了这个引用是final的,如果这个引用指向了一个数组,数组的成员的值还是可以变化。arrays are objects in java
Final classes
final class不能被继承。作用:
-
prevent inheritance阻止继承:例如所有
Wrapper Class
比如Integer
和Float
。 -
create an immutable class创建不可变的类:比如
String
Final methods
不能被override
。
网友评论