final 在 java 中有什么作用

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 在 Java 中,`final` 关键字用于限制变量、方法和类的修改或继承。对变量使用 `final` 可使其成为常量;对方法使用 `final` 禁止其被重写;对类使用 `final` 禁止其被继承。
  1. 用于修饰变量(成员变量、局部变量和方法参数)
    • 成员变量:当final修饰成员变量时,该变量必须在声明时或者在构造函数中初始化,且初始化后不能再被修改。例如:
      class MyClass {
             
      // 声明一个final成员变量
      private final int myFinalVariable;
      public MyClass(int value) {
             
         // 在构造函数中初始化final成员变量
         myFinalVariable = value;
      }
      // 以下这种修改final成员变量的方式是不允许的
      // public void modifyFinalVariable() {
             
      //     myFinalVariable = 10; 
      // }
      }
      
    • 局部变量:对于局部变量,final同样限制其不可被重新赋值。例如:
      public void myMethod() {
             
      final int localFinalVariable = 5;
      // 不能重新赋值,下面这行代码会导致编译错误
      // localFinalVariable = 10;
      }
      
    • 方法参数:当final修饰方法参数时,在方法体内部不能重新赋值该参数。例如:
      public void anotherMethod(final int finalParam) {
             
      // 不能重新赋值,下面这行代码会导致编译错误
      // finalParam = 20;
      System.out.println(finalParam);
      }
      
  2. 用于修饰方法
    • final修饰方法时,该方法不能被子类重写。这在设计类的继承结构时非常有用,可以确保某些方法的行为在子类中不会被改变。例如:
      class ParentClass {
             
      // 声明一个final方法
      public final void finalMethod() {
             
         System.out.println("This is a final method in the parent class.");
      }
      }
      class ChildClass extends ParentClass {
             
      // 尝试重写final方法,会导致编译错误
      // public void finalMethod() {
             
      //     System.out.println("This is an attempt to override the final method.");
      // }
      }
      
  3. 用于修饰类
    • final修饰类时,该类不能被继承。这通常用于设计一些不希望被扩展的类,例如,某些工具类或者具有固定行为的类。例如:
      // 声明一个final类
      final class FinalClass {
             
      // 类的成员和方法
      }
      // 尝试继承final类,会导致编译错误
      // class SubClass extends FinalClass {
             
      // }
      

final关键字在Java中的主要作用是提供不可变性和限制继承/重写,有助于增强代码的稳定性、安全性和可维护性。在设计代码架构时,合理地使用final可以更好地控制代码的行为和数据的变化。

相关文章
|
2月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
37 2
|
3月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
47 3
|
3月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?
|
3月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
42 5
|
3月前
|
缓存 安全 Java
Java中 final、finally、finalize 有什么区别?
本文详细阐述了Java中`final`、`finally`和`finalize`的区别:`final`用于修饰类、方法和变量以表示不可变性;`finally`是用于确保在`try-catch`结构中无论是否发生异常都能执行的代码块;而`finalize`是`Object`类的方法,用于在对象被垃圾回收前执行清理工作,但在JDK 9中已被标记为弃用。
81 0
Java中 final、finally、finalize 有什么区别?
|
3月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
296 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
3月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
了解final关键字在Java并发编程领域的作用吗?
|
3月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
55 0
|
3月前
|
安全 Java 编译器
了解final关键字在Java并发编程领域的作用吗?
【10月更文挑战第8天】在Java并发编程中,`final`关键字具有重要作用,包括保证变量的可见性和不可变性,防止对象引用被意外修改,并帮助编译器优化读取操作及消除不必要的同步。通过确保变量不可变,`final`增强了多线程环境下的安全性与性能。
|
5月前
|
前端开发 JavaScript Java
【前端学java】java中final修饰符(6)
【8月更文挑战第9天】java中final修饰符(6)
44 2