- Final关键字
表示最终的,不可变的
修饰类
final class A{
}
class B extends A{
}
A类用final修饰后不可以被继承。
修饰方法
修饰的方法不可以被重写。
修饰变量 只可以赋值一次思考:
1、当用final来修饰一个引用时
final Person p = new Person()
p = new Person();
这样写是错误的,因为p保存的地扯不能再发生改变,而new出新的对象地址发生了变化 。2、当用final来修饰实例变量时,会出现什么特殊的现像?
实例变量可以不用初始化值(局部变量没有初始值,成员变量才有。),但当用final来修饰的时候如果不初始化赋值时就是默认值,而且不能再去赋值,这样就会显得比较鸡肋,所以规定final修饰的实例变量必须要初始化值。
3、为当final来修饰实例变量没有赋值为出现编译错误,但是在构造方法上加上对final修饰的变量的赋值就可以通过?因为赋值发生在调用构造方法的时候(new对像的时候),所以也相当于对final修饰的变量进行了一次赋值,所以不会报错。
4、
总结:final修饰类不能被继承,修饰方法不能被重写,修饰变量只能赋值一次。