final

(1)final修饰的类无法被继承。

java final关键字_赋值

 (2)final修饰的方法无法被覆盖、重写。

(3)对于普通类型,final修饰的变量只能被赋值一次。

java final关键字_实例变量_02

(4)对于引用类型,final修饰的变量是引用类型,只要引用类型不变,值可以被修改。  

public class AAA {
static final private Map<String, Object> map = new HashMap<>();
public static void main(String[] args) {
map.put("name", "lxc");
System.out.println(map.get("name"));
map.put("name", "hehe");
System.out.println(map.get("name"));
}
}

java final关键字_实例变量_03

(5)如果使用final修饰一个实例变量,要么变量初始化时手动赋一个值,要么在构造函数中为变量赋值。

(1)在有参构造中为实例变量赋值。

class B {
final String name;
public B (String name) {
this.name = name;
}
public static void main(String[] args) {
System.out.println(new B("哈哈").name);
}
}

java final关键字_引用类型_04

 (2)在无参构造中调用实例变量为其赋值。

class B {
final String name;
public B() {
this.name = "哈哈";
}
public static void main(String[] args) {
System.out.println(new B().name);
}
}

java final关键字_引用类型_05