final 关键字可以用于修饰类、方法、变量。
- 修饰类 , 类不可以被继承。
- 修饰方法,方法不可以被重写。
- 修饰变量:变量为基础数据类型,这个变量一旦被初始化之后就不能在改变。
变量为引用数据类型,这个引用的地址不可以被修改,引用指向的对象的内容还可以修改。
1. 修饰类
final 修饰类 , 类不可以被继承,测试代码如下所示:
MyFinalStudy 类使用 final 修饰。
package finalStudy;
public final class MyFinalStudy {
}
MyFinalStudy1 继承 MyFinalStudy报错。
package finalStudy;
public class MyFinalStudy1 extends MyFinalStudy {
}
2. 修饰方法
测试代码,MyFinalStudy 类中的 play 方法 使用 final 修饰。
package finalStudy;
public class MyFinalStudy {
public final void play() {
}
}
MyFinalStudy1 继承 MyFinalStudy,重写play报错。
3. 修饰变量
final 修饰 基本数据类型。
final 修饰 引用类型。
引用数据类型的内容还可以再改变。
运行截图:
4. final 适用的情况
final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字:
1) 不允许被继承的类,如:String 类。
2) 不允许修改引用的域对象。
3) 不允许被重写的方法,如:POJO 类的 setter 方法。
4) 不允许运行过程中重新赋值的局部变量。
5) 避免上下文重复使用一个变量,使用 final 描述可以强制重新定义一个变量,方便更好地进行重构。