Contents
  1. 1. 1 final用于修饰变量
  2. 2. 2 final修饰类
  3. 3. 3 final修饰方法

1 final用于修饰变量

final变量只能赋值一次,赋值的方式有三种:

  • 1)声明变量时直接赋值;

  • 2)非静态成员变量在{}块中赋值,静态成员变量在static{}块中赋值;

  • 3)非静态成员变量在构造方法中赋值。

三种赋值方式的顺序是1)、2)、3),若有一种方式先行赋值了,则后面的方式就不能再赋值,否则就会编译错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

public class FinalTest {

private final int a;
private static final int b;
private final static int c;

{
a = 2;
}

static {
b = 2;
c = 2;
}

public FinalTest() {
// a = 3;// The final field a may already have been assigned
// b = 3;// The final field FinalTest.b cannot be assigned
// c = 3;// The final field FinalTest.b cannot be assigned
}

}

2 final修饰类

final类不能被继承,因此不会有子类。final类中的方法不论是否有final修改,都是final的。

3 final修饰方法

final方法不能被override(重写)。若父类中的方法为final的,则子类不能override该方法,但可以通过super调用该方法(父类的final方法)。

Contents
  1. 1. 1 final用于修饰变量
  2. 2. 2 final修饰类
  3. 3. 3 final修饰方法