当前位置: 首页 > news >正文

Java 知识速记:全面解析 final 关键字

Java 知识速记:全面解析 final 关键字

什么是 final 关键字?

final 关键字是 Java 中的一个修饰符。它可以用于类、方法和变量,其作用是限制对这些元素的修改。究竟如何限制?我们来逐个分析。

final 在变量中的用法

1. 声明常量

当我们使用 final 修饰一个变量时,该变量就成为不可重新赋值的常量。一旦被初始化后,变量的值就不能再发生改变。

final int MAX_USERS = 100;
// MAX_USERS = 200; // 这行代码会导致编译错误

在上述例子中,MAX_USERS 被定义为常量,它的值为 100,不能再修改。

2. 引用类型变量

对于引用数据类型的变量,如果将其定义为 final,则意味着该变量所引用的对象的地址不可更改,但对象的内容是可以修改的。

final List<String> users = new ArrayList<>();
users.add("Alice");
// users = new ArrayList<>(); // 这行代码将导致编译错误

在这个例子中,users 引用的对象无法更改,但我们仍然可以修改该对象内部的内容。

final 在方法中的用法

1. 防止方法被重写

当一个方法被声明为 final 时,子类不能重写该方法。这对于想要保护方法的实现细节以及确保其行为不被修改的类尤其重要。

class BaseClass {final void show() {System.out.println("我是一个最终方法");}
}class SubClass extends BaseClass {// void show() { // 这行代码将导致编译错误//     System.out.println("尝试覆盖最终方法");// }
}

通过这种方式,我们可以确保 show 方法的逻辑在基类中保持不变,子类无法擅自修改。

final 在类中的用法

1. 防止类被继承

当一个类被声明为 final 时,该类不能被其他类继承。这在某些情况下可以保持类的封装性和安全性。

final class ImmutableClass {// 类的实现
}// class SubClass extends ImmutableClass { // 这行代码将导致编译错误
// }

这种做法确保了 ImmutableClass 的实现不会因为子类的存在而被改变。

使用 final 关键字的优势

  • 提高代码安全性:通过限制类、方法和变量的修改,可以有效避免意外更改导致的错误。
  • 提高性能:在某些情况下,Java 编译器可以优化 final 定义的变量和方法,提高运行效率。
  • 增强可读性:使用 final 显示了开发者对代码意图的清晰表达,帮助其他人理解代码。
http://www.lryc.cn/news/529141.html

相关文章:

  • (笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识
  • 9、Docker环境安装Nginx
  • 受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )
  • 572. 另一棵树的子树
  • MATLAB中textBoundary函数用法
  • vue3的路由配置
  • 在彼此的根系里呼吸
  • 深入理解若依RuoYi-Vue数据字典设计与实现
  • 深入MapReduce——从MRv1到Yarn
  • Flutter_学习记录_Tab的简单Demo~真的很简单
  • CSS核心
  • Deepseek本地部署(ollama+open-webui)
  • PaddleSeg 从配置文件和模型 URL 自动化运行预测任务
  • 数据结构 队列
  • Cocoa和Cocoa Touch是什么语言写成的?什么是Cocoa?编程语言中什么是框架?为什么苹果公司Cocoa类库有不少NS前缀?Swift编程语言?
  • 登录管理——认证方案(JWT、拦截器、ThreadLocal、短信验证)
  • Java实现LFU缓存策略实战
  • 物业系统改革引领行业智能化管理与提升服务质量的新征程
  • QT+mysql+python 效果:
  • 动手学图神经网络(4):利用图神经网络进行图分类
  • 【Block总结】PConv,部分卷积|即插即用
  • 接口使用实例(1)
  • 动态规划DP 最长上升子序列模型 总览
  • 网络工程师 (7)进程管理
  • 登录授权流程
  • Flutter_学习记录_导航和其他
  • 二叉树-堆(补充)
  • Big Bird:适用于更长序列的Transformer模型
  • doris:MySQL Load
  • 电感的饱和、温升、额定电流