概念与四种用法
- final在Java中的含义就是它本身词语的含义:最终的,最后的,不可变的。
- 常见四种用法
- 可以修饰一个类;
- 可以修饰一个方法;
- 可以修饰一个局部变量;
- 可以修饰一个成员变量。
修饰一个类
- 当final关键字用来修饰一个类时格式为:
public final class 类名称 {
//...
}
- 含义:当前这个类不能有任何的子类。(俗称太监类,不过太监类也有父类,最不济也有Object类)即,final关键字修饰的所有成员方法都不能进行覆盖重写,因为没有子类。
修饰成员方法
- 当final关键字用来修饰一个方法的时候,这个方法就是最终方法,即不能被覆盖重写
- 格式:
修饰符 final 返回值类型 方法名称(参数列表){
//方法体
}
注:对于类、方法体来说,abstract关键字和final关键字不能同时使用,因为互相矛盾。
修饰局部变量
- 使用final修饰局部变量,那么这个变量就不能被更改,“一次赋值,终生不变”
- 对于基本数据类型来说,不可变指变量中的数值不可改变
- 对于引用类型来说,不可变指的是变量中的地址值不可改变(地址值不变,该地址的值是可以改变的)
修饰成员变量
- 对于成员变量,如使用final关键字修饰,那么这个变量也照样不可变
- 由于成员变量具有默认值,所以用了final之后必须手动赋值;
- 对于final的成员变量,要么直接赋值,要么通过构造方法,注意只能二选一。
- 必须保证类中所有的重载的构造方法,最终会对final的成员变量进行赋值。