1.修饰变量时,表示该变量一旦获得初始值就不可改变
final修饰的成员变量必须由程序员显示地指定初始值,系统不会进行隐式初始化
- 类变量:必须在初始化块中指定初始值或声明该类变量时指定初始值
- 实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值
例如:
final int[] abc={1,2,6,5}; abc[2]=9;//合法 abc=null;//非法 Arrays.sort(abc);//对abc数组排序合法
2.修饰方法时,表示方法不可被重写
例如:
//会发生编译错误,不能重写final方法 public class Father{ public final void test(){...} } class Son extends Father{ public void test(){...} } //对于private方法,子类无法访问该方法,所以无法重写。子类只是重新定义一个新的方法。 //不会发生编译错误 public class Father{ private final void test(){...} } class Son extends Father{ public void test(){...} }
3.修饰类时,表示修饰的类不可以有子类
例如:
//会发生编译错误,Father类被final修饰,不可以有子类 public final class Father{...} class Son extends Father{...}