final
(1)final修饰的类无法被继承。
(2)final修饰的方法无法被覆盖、重写。
(3)对于普通类型,final修饰的变量只能被赋值一次。
(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"));
}
}
(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);
}
}
(2)在无参构造中调用实例变量为其赋值。
class B {
final String name;
public B() {
this.name = "哈哈";
}
public static void main(String[] args) {
System.out.println(new B().name);
}
}