Java中final关键字的三种常见用法

final关键字用于限制类、方法和变量的修改。1. 修饰变量时值不可变,基本类型值不变,引用类型地址不变但对象内容可变;2. 修饰方法时子类不能重写,确保关键逻辑安全;3. 修饰类时该类不能被继承,如String类,保证类的不可扩展性。

final 是 Java 中的一个重要关键字,主要用于限制类、方法和变量的行为。它的核心作用是“不可改变”。以下是 final 关键字的三种常见用法:

1. 修饰变量:表示值不可更改

当 final 修饰一个变量时,意味着该变量一旦被赋值,就不能再修改。 对于基本数据类型,值不能变;对于引用类型,引用地址不能变(但对象内部状态可以变)。 通常与 static 一起使用定义常量。

示例:

  • final int MAX_COUNT = 100; // 基本类型,值不可变
  • final List list = new ArrayList();
  • list.add("hello"); // 允许:对象内容可变
  • // list = new ArrayList(); // 错误:引用地址不能重新赋值

2. 修饰方法:表示方法不能被重写

final 修饰的方法不能在子类中被覆盖(override),但可以被继承和调用。 这常用于防止关键逻辑被篡改,增强程序的安全性和稳定性。

示例:

  • class Parent {
  •   final void print() {
  •     System.out.println("This cannot be overridden");
  •   }
  • }
  • class Child extends Parent {
  •   // void print() {} // 编译错误:不能重写 final 方法
  • }

3. 修饰类:表示类不能被继承

final 类不能被其他类继承,即不能有子类。 这通常用于设计不可扩展的工具类或安全相关的类。 Java 标准库中的 String、Integer 等都是 fin

al 类。

示例:

  • final class Utility {
  •   public void doWork() { }
  • }
  • // class MyUtility extends Utility { } // 编译错误:不能继承 final 类

基本上就这些。final 的合理使用有助于提高代码的安全性和清晰度,特别是在多线程环境或设计不可变对象时非常有用。理解它的三种用法是掌握 Java 基础的重要一步。