final 关键字
修饰对象 | 效果 |
---|---|
类 | 不能有子类 |
方法 | 不能够被重写 |
变量 | 不能被赋值两次 |
final 限制变量不能被赋值两次。
public class FinalTest {
private final String user;
private final int a ;
// final变量在定义时赋值
private final String name = "lili";
private final Son son = new Son("xiaoming",16);
//final限制变量只能赋值一次,即son引用变量只能指向这个对象的地址,不能在赋值指向其他对象
// 可以修改变量指向的内容
public void changeSon() {
this.son.setAge(19);
}
// final 成员变量构造方法来赋值
// 两者只能选择一种
public FinalTest(String user,int a) {
this.user = user;
this.a = a;
}
public void change(){
// 错误,final 变量只不能在其他方法内赋值
// this.user = "java";
}
}
应用String类不可变原因:成员变量被final修饰,并且对可能修改该对象的方法通过new来修改。详细解释见