final 关键字
修饰变量
被它修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。
修饰成员变量
成员变量必须 在定义处赋值 或者 在构造方法中赋值。 (两者只能选其一)
修饰局部变量
可以先声明,不马上赋值。但只能赋值一次,不能再修改。
final修饰的是引用变量时只是引用值不能改变。对应的对象内部的属性仍然可变。
public class tt {
final int p = 0; // 定义处赋值
final int i;
public tt(int i) { // 构造方法里赋值
this.i = i;
}
public static void main(String[] args) {
final int b; // 局部变量可以不马上赋值,但只能赋值一次
b = 1;
}
}
修饰方法
该方法不可被子类重写。但是可以被重载!
如果父类方法是 private final ,那么对子类完全不可见;子类也就可以定义自己的同名的方法。这个不是重写了,而是子类自己新定义的方法。
修饰类
修饰的类不能有子类,不能被继承。比如:Math、String
总结: final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。