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

ZZAX 微信公众

文档一更新,立刻告诉你