1.修饰变量时,表示该变量一旦获得初始值就不可改变

  final修饰的成员变量必须由程序员显示地指定初始值,系统不会进行隐式初始化

  1. 类变量:必须在初始化块中指定初始值或声明该类变量时指定初始值
  2. 实例变量:必须在非静态初始化块、声明该实例变量或构造器中指定初始值

    例如:

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{...}
05-10 20:49
查看更多