final意思是This cannot be changed.
1、对于基本类型,final使数值恒定不变;对于对象引用,final使引用恒定不变,但对象自身是可以被修改的。按照惯例,既是final又是static域将用大写字母表示并用下划线分割各个单词。
private static final int VALUE_TWO=99;
public static final int VALUE_THREE=999;
有时候参数是final的,这时无法更改参数引用所指向的对象。class Gizmo{
public void spin(){}
}
public class FinalArguments {
void with(final Gizmo g){
//! g=new Gizmo(); //Illeal,g is final
}
void without(Gizmo g){
g=new Gizmo();
g.spin();
}
void f(final int i){
// ! i++; //can't change
}
//you can only read from a final primitive
int g(final int i){
return i+1;
}
}
2、方法为final时,可以防止任何继承类修改其含义,即不能被重写(override)。任何private方法都隐式的指定为final的。
3、如果类被定义成final,则不能继承这个类。