final是Java中一个重要的关键字,代表“最终的,不可改变的”
常见四种用法:
- 可以用来修饰一个类
- 可以用来修饰一个方法
- 可以用来修饰一个成员变量
- 可以用来修饰一个局部变量
1.final修饰一个类
格式:
//当前这个类不能有任何一个子类
public final class 类名称 {
//.......
}
final修饰的类,不能有子类(但是可以有父类)。
一个类如果是final,其中所有的方法都不能进行覆盖重写。
2.final修饰方法
格式:
修饰符 final 返回值类型 方法名称(参数列表){方法体}
当final修饰一个方法是,这个方法不能被覆盖重写
注意:
对于类、方法来说,abstract关键字和final关键字不能同时使用!
3.final修饰成员变量
final修饰成员变量,这个变量不可变
- 由于成员变量有默认值,所以用了final之后,必须手动赋值,不会再给默认值了
- 对于final的成员变量,要么使用直接赋值,要么使用构造方法赋值(二者选其一),但必须保证所有重载的构造函数都赋值。
4.final修饰局部变量
用final修饰的局部变量,这个变量不能被更改(一次赋值,终生不变)
注意:只要保证有唯一一次赋值即可,如
final int num2;
num2 = 100;
对于基本类型来说,不可变说的是变量当中的数据不可变;
对于引用类型来说,不可变说都是变量当中的地址值不可改变。(但改地址上的内容可以改变!)
final MyClass m1 = new MyClass();
//错误写法,不能改变m1地址
m1 = new MyClass();