Java基础 - final关键字

150 阅读2分钟

final是 Java 中一个常见关键字,使用 final 修饰的对象不允许修改或替换其原始值或定义。

final 的 4 种用法

  1. 修饰类。 被 final 修饰的类不允许被继承,表示此类设计的是完整的,不需要被修改和扩展。
  2. 修饰方法。被 final 修饰的方法表示此方法提供的功能已经满足当前要求,不需要进行扩展,并且不可以被子类的方法重写。
  3. 修饰变量。 当 final 修饰变量时,变量是只读的。可以安全的在多线程环境下进行共享,而不需要额外的同步开销。
  4. 修饰参数。 当 final 修饰参数时,表示此参数在整个方法内不允许被修改。

final 作用

使用 final 修饰类可以防止被其他类继承,如 JDK 代码中 String 类就是被 final 修饰的,从而防止被其他类继承,导致内部逻辑被破坏。

static final

可修饰:成员变量、方法、内部类,被Static final修饰意义分别如下:

  1. 成员变量:属于类的变量且只能赋值一次。
  2. 方法:属于类的方法且不可以被重写。
  3. 内部类:属于外部类,且不能被继承。

final、finally、finalize 有什么关联?

final、finally 和 finalize 从字面角度来看,看似很像,实则 3 者在 Java 中没任何关系。

  • final 是用来修饰类、方法、变量和参数的关键字,被 final 修饰的对象不允许修改或替换其原始值或定义;
  • finally 是 Java 中保证重点代码一定要被执行的一种机制;
  • finalize 是 Object 类中的一个基础方法,它的设计目的是保证对象在被垃圾收集前完成特定资源的回收的,但其执行“不稳定”,且有一定的性能问题,已经在 JDK 9 中被设置为弃用的方法了。