Skip to content

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);
    }
}

注意事项

  1. 提高安全性:防止意外修改
  2. 性能优化:编译器可能进行内联
  3. 常量命名:常量通常用大写字母

基于 VitePress 构建