亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

深入理解 Java final 关键字:变量、方法与类的不可变性

Java final 关键字

探索 Java final 关键字如何保护常量、禁止方法重写、阻止类继承,附带清晰示例。

在 Java 中,final 关键字表示实体(变量、方法或类)在初始定义后不可更改。这种不可变契约在编译期强制执行,为开发者提供程序行为的保证。


1. Final 变量

声明变量为 final 后,其值在首次赋值后被锁定。这是 Java 中定义常量的标准方式。

class Main { public static void main(String[] args) { // 声明 final 变量 final int AGE = 32; // 以下行会导致编译错误 // AGE = 45; System.out.println("Age: " + AGE); } } 

编译器会拒绝编译试图重新赋值 AGE 的代码,报错类似:

cannot assign a value to final variable AGE AGE = 45; ^ 

提示: 惯例上,常量名全大写并用下划线分隔(如 MAX_SIZE),以表明其不可变性。


2. Final 方法

Final 方法是 Java 继承安全网的一部分。方法标记为 final 后,任何子类都无法重写它,从而保留原始实现。

class FinalDemo { // Final 方法 public final void display() { System.out.println("This is a final method."); } } class Main extends FinalDemo { // 尝试重写 —— 编译错误 public final void display() { System.out.println("The final method is overridden."); } public static void main(String[] args) { Main obj = new Main(); obj.display(); } } 

尝试重写 display() 会产生错误:

display() in Main cannot override display() in FinalDemo public final void display() { ^ overridden method is final 

3. Final 类

final 类不可被子类化。常用于安全关键或不可变类型,确保类行为不被篡改。

// Final 类定义 final class FinalClass { public void display() { System.out.println("This is a final class."); } } // 尝试继承 final 类 class Main extends FinalClass { public void display() { System.out.println("The final class is overridden."); } public static void main(String[] args) { Main obj = new Main(); obj.display(); } } 

编译器会拒绝此继承:

cannot inherit from final FinalClass class Main extends FinalClass { ^ 

java

  1. C# static 关键字:静态变量、方法与类完全掌握
  2. Java instanceof 运算符完全指南:用法、继承与接口检查
  3. 精通 Java 继承:核心概念、类型与实战示例
  4. 深入理解 Java 静态嵌套类:用法、差异与实战示例
  5. 精通 Java 匿名内部类:定义、语法与实战示例
  6. Java 单例模式详解:安全实现与使用指南
  7. 精通 Java 反射:运行时检查类、方法与字段
  8. 精通 Java ArrayList:操作、方法与最佳实践
  9. Java Stack 类全面指南:用法、核心方法与实战示例
  10. 掌握 Java ObjectOutputStream:序列化、核心方法与实战示例
  11. 掌握 Java 泛型:构建可复用、类型安全的代码
  12. 掌握 Java 文件操作:java.io 包下的创建、读取、写入与删除