Final 修饰符
一旦修饰,不可改变
Final 修饰变量
不可被二次赋值
Final 修饰局部变量
第一次赋值后,不可被二次赋值
1 2!final int a = 3;a = 4;
Final 修饰参数变量
接收参数后,函数内不可被二次赋值
1 2 3 4 5 6 7!8 public void run() { f(3); f(5);} public int f(final int a) { a = 4;}
Final 修饰属性
可以在声明、或所有构造方法里赋值
赋值后,不可被二次赋值
1 2 3 4!5 6 public class Cla { private final int a = 1; public void func() { a = 3; }}
1 2 3 4 5 6 7!8 9 public class Cla { private final int a; public Cla () { a = 2; } public void func() { a = 3; }}
Final 修饰方法
方法不能被覆盖
从而阻止多态导致的行为改变
1 2 3 4 5 public class Cla { public final void func() { }}
1 2!3 4 5 public class Dla extends Cla { public void func() { }}
Self Check
接口里的方法 可以标记为 final
Final 修饰类
类不能被继承
1 2 3 public final class Cla { }
1!2 3 public class Dla extends Cla { }
Self Check
Object class 是 final 的
接口 可以标记为 final