Final关键字是什么
final 是 Java 中的一个关键字,用于表示 不可变性,可以修饰 类、方法 和 变量。修饰类时禁止继承,修饰方法时禁止重写,修饰变量时使其值不可修改(常量)。它增强了代码的安全性和可预测性。
关键事实
- 修饰类:
- 类不能被继承。
- 示例:final class MyClass。
- 修饰方法:
- 方法不能被子类重写。
- 示例:final void myMethod()。
- 修饰变量:
- 变量值不可变,变为常量。
- 示例:final int MY_CONST = 10。
- 作用:
- 防止修改或扩展,保证稳定性。
具体详解
1. 修饰类
- 含义:类无法被子类继承。
2. 修饰方法
- 含义:子类不能重写该方法。
- 用途:锁定关键逻辑,防止篡改。
3. 修饰变量
- 含义:变量赋值后不可变。
- 分类:
- 基本类型:值不可变。
- 引用类型:引用不可变,但对象内容可变。
- 初始化:
- 静态常量:static final,类加载时赋值。
- 实例变量:在声明、构造器或初始化块中赋值。
延伸与面试角度
- 为什么用 final?:
- 安全性:防止意外修改或继承(如 String)。
- 性能:编译器可优化(如内联 final 方法)。
- 与常量区别:
- final 变量是运行时常量,值可在构造时确定。
- 编译期常量(static final)在编译时替换。
- 实际应用:
- 类:String、Math,确保不可变。
- 方法:锁定模板方法。
- 变量:定义 PI = 3.14。
- 常见误解:
- final 对象内容可变(如 final List 可添加元素)。
- 面试点:
- 问“final 对象可变吗”时,提引用 vs 内容。
- 问“优化”时,提内联和不可变性。
总结
final 关键字修饰类(不可继承)、方法(不可重写)和变量(不可改值),确保代码稳定性和安全性。基本类型值固定,引用类型引用固定。面试时,可结合 String 或常量示例,展示理解深度。