final表示最终的、不可改变的
final跟abstract不可以同时使用,因为二者是冲突的。final表示不可变,abstrac表示必须要重写、必须要变。
常见的四种用法
- 修饰一个类
- 格式: public final class 类名称{ }
- final修饰之后,这个类不能存在任何的子类,但是可以存在父类,也就是说可以继承其他类
- 修饰一个方法
- 格式:public final 返回值 方法名(){ 方法体}
- 当使用final修饰一个方法之后,这方法就不能被重写,也就是最终版本的方法了
- 修饰一个局部变量
- 格式: final 变量类型 变量名字 = 值;
- 对于基本类型来说,使用了final关键字之后,变量的值就不可以改变了;
- 对于引用类型来说,使用了final关键字之后,变量的指向不可改变,但是值可以改变。因为引用类型保存的是一个地址,使用final之后地址就不可变,但是地址里面保存的数据不受影响。
- 修饰一个成员变量
- 对于成员变量来说,因为成员变量是有默认值的(java自动加的默认值),所以必须自己手动加一个默认值,因为java自动加的默认值没有意义;
- 对于final修饰的成员变量,要么使用直接赋值,要么在构造函数里面赋值,总之必须保证类被实例化之后final修饰的成员变量是被赋值的;
- 如果使用构造函数赋值,那么必须要保证任意一种构造函数都会对final修饰的成员变量进行赋值。
权限修饰符包括四种,按权限大小排序分别如下;