Final 关键字
概述
final 关键字可以修饰类、方法和变量。
基本概念
修饰对象
| 修饰对象 | 说明 |
|---|---|
| 类 | 不能被继承 |
| 方法 | 不能被重写 |
| 变量 | 不能被重新赋值 |
代码示例
Final 类
java
public class FinalClassDemo {
// Final 类不能被继承
final class MathUtils {
static int add(int a, int b) {
return a + b;
}
}
// ❌ 错误:不能继承 final 类
// class AdvancedMath extends MathUtils {}
public static void main(String[] args) {
System.out.println(MathUtils.add(1, 2));
}
}Final 方法
java
public class FinalMethodDemo {
static class Parent {
// Final 方法不能被重写
final void display() {
System.out.println("Parent display");
}
void normalMethod() {
System.out.println("Parent normal method");
}
}
static class Child extends Parent {
// ❌ 错误:不能重写 final 方法
// @Override
// void display() {}
@Override
void normalMethod() {
System.out.println("Child normal method");
}
}
public static void main(String[] args) {
new Child().display();
}
}Final 变量
java
public class FinalVariableDemo {
public static void main(String[] args) {
// 基本类型:值不能改变
final int NUM = 100;
// NUM = 200; // ❌ 错误
// 引用类型:引用不能改变
final StringBuilder sb = new StringBuilder("Hello");
// sb = new StringBuilder(); // ❌ 错误
sb.append(" World"); // ✅ 可以修改对象内容
System.out.println(sb);
}
}修饰参数
java
public class FinalParameterDemo {
static void method(final int num) {
// num = 10; // ❌ 错误
System.out.println(num);
}
public static void main(String[] args) {
method(5);
}
}注意事项
- 提高安全性:防止意外修改
- 性能优化:编译器可能进行内联
- 常量命名:常量通常用大写字母
