final关键字常用的4种用法
-
可以用来修饰一个类
-
可以用来修饰一个方法
-
可以用来修饰一个局部变量
-
可以用来修饰一个成员变量
-
对于类、方法来说:
abstract
关键字和final
关键字不能同时使用,因为abstract
修饰的抽象类或者方法一定要通过覆盖重写才有意义,而final
定义的东西都不能再被重写,所以矛盾
final 修饰一个类
- 格式:
public final class 类名称 {方法体}
要把 final 放到 class 之前 final
修饰的类称为太监类,因为不能有子类- 一个类如果是
final
的,那么其中所有的成员方法都无法进行覆盖重写
final 修饰一个方法
- 当
final
来修饰一个方法的时候,这个方法就是最终方法,即不能被覆盖重写 - 格式:
final 修饰一个局部变量
-
一旦使用
final
来修饰局部变量,这个变量就不能再进行更改;一次赋值,终生使用
-
使用 final关键字定义的局部变量,只要保证有一次赋值即可;
【不可变的意义】: -
对于一个基本类型的变量来说,不可变代表的是这个变量的值不可变
-
对于一个引用数据类型来说,不可变代表的是这个变量的地址值不可变。
-
因此用
final
修饰的引用类型变量是不可以再修改其地址值的。如下:stu1
变量没有被final
修饰,因此可以随意改变其地址值,进行重新赋值,但是stu2
变量被final
关键字修饰,因此不能再重新改变地址值
final 关键字修饰成员变量
-
由于成员变量具有默认值,和局部变量不同,所以用了
final
之后必须进行手动赋值,系统不会再分配默认值了,因为如果系统默认分配值,再通过final
修饰就不可变了,永远都是初始化的那个值。
-
对于
final
修饰的成员变量,要么使用直接赋值,要么通过构造方法赋值 -
必须保证类当中所有重载的构造方法,都最终会对
final
的成员变量进行赋值