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

final 使用

(1) final 变量(常量)

  • 局部变量:一旦赋值,不可修改

  • 成员变量:必须在声明时或构造方法中初始化

  • 静态变量:必须在声明时或静态代码块中初始化

final int x = 10;          // 局部 final 变量
x = 20;                    // 编译错误!不能重新赋值class MyClass {final int y;           // final 成员变量final static int Z;    // final 静态变量static {Z = 100;           // 静态代码块初始化}public MyClass() {y = 20;           // 构造方法初始化}
}

关键点

  • 基本类型:值不可变(如 final int x = 10

  • 引用类型:引用不可变,但对象内部状态可能可变(如 final List<String> list = new ArrayList<>() 仍可 add()

(2) final 方法(不可重写)

  • 子类不能重写 final 方法

  • 用途:防止继承破坏关键逻辑(如 Object.getClass()

示例

class Parent {public final void show() {System.out.println("Parent's final method");}
}class Child extends Parent {// @Override  // 编译错误!不能重写 final 方法public void show() { } 
}

注意private 方法隐式是 final 的,因为子类无法访问。

(3) final 类(不可继承)

  • 该类不能被继承(如 StringInteger 等核心类)

  • 用途:保证类的行为不被修改,增强安全性

final class ImmutableClass { }
// class SubClass extends ImmutableClass { }  // 编译错误!

总结

场景作用典型用例
final 变量防止重新赋值常量、方法参数、共享数据
final 方法禁止子类重写模板方法模式、关键算法
final 类禁止继承工具类、核心不可变类(如 String
http://www.dtcms.com/a/285857.html

相关文章:

  • 实现库存显示和状态按钮的Question
  • 数据统计模块后端架构解析:从Controller到SQL的ECharts数据对接实践
  • Spring介绍以及IOC和AOP的实现
  • 某邮生活旋转验证码逆向
  • Ansible + Shell 服务器巡检脚本
  • 如何使用Python将HTML格式的文本转换为Markdown格式?
  • UDP 协议下一发一收通信程序的实现与解析
  • Python - 数据分析三剑客之Pandas
  • docker--容器自启动
  • Vue导出Html为Word中包含图片在Microsoft Word显示异常问题
  • Python MP3 归一化器和长度分割器实用工具开发指南
  • 曼哈顿自注意力MaSA,基于曼哈顿距离的显式空间先验,以线性计算复杂度高效建模全局与局部空间关系,提升视觉任务的性能。
  • Java: 反射机制的 ParameterizedType(参数化类型)
  • WEB弹性设计
  • 使用 C++ 和 OpenCV 进行表面划痕检测
  • jQuery最新js文件下载教程
  • Django母婴商城项目实践(五)
  • Python 使用期物处理并发(使用concurrent.futures模块下载)
  • 黑马Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack+promise等_ts对象笔记
  • MISRA C-2012准则之指针类型转换
  • build.log中的is not a subdirectory of和ScanSourceDirectories函数的关系
  • 「Java案例」方法重装求不同类型数的立方
  • MySql:索引,结构
  • Leetcode 04 java
  • cocosCreator2.4 Android 输入法遮挡
  • JAVA中StringBuilder类,StringJoiner类构造函数方法简单介绍
  • C语言基础:数组练习题
  • Zabbix安装-Server
  • 【JS笔记】Java Script学习笔记
  • 【C语言进阶】题目练习(2)