final 在 java 中有什么作用?

final 在 java 中有什么作用?

修饰变量

  1. 修饰基本数据类型变量
  • 当用final修饰基本数据类型变量时,该变量就变成了常量 ,其值在初始化后不能被改变
java 复制代码
final int num = 10; 
// num = 20; // 这行代码会导致编译错误,因为 num 是 final 修饰的常量不能被重新赋值。
  1. 修饰引用类型变量
  • final修饰引用类型变量时,该引用不能再指向其他对象 ,但对象本身的内容是可以改变的
java 复制代码
final StringBuilder strBuilder = new StringBuilder("Hello"); 
// strBuilder = new StringBuilder("World"); // 这行代码会导致编译错误,不能让 strBuilder 指向其他对象。 
strBuilder.append(" World"); // 但是可以修改对象本身的内容。

修饰方法

  • 当一个方法被final修饰时,这个方法不能在子类中被重写
  • 确保该方法的行为在继承体系中是固定的,不会被意外修改
java 复制代码
class Base {
    final void someMethod() {
        System.out.println("This method cannot be overridden.");
    }
}

class Derived extends Base {
    // 不能重写 someMethod 方法,否则会编译错误。
}

修饰类

  • 用final修饰的类不能被继承
  • 该类的功能是固定的,不能被扩展
    • java.lang.String类就是final类,以确保字符串的核心行为不会被意外改变
java 复制代码
final class FinalClass {
    // 类中的方法和变量等。
}

// class SubClass extends FinalClass { // 这行代码会导致编译错误,因为 FinalClass 是 final 类不能被继承。

总结

  • final关键字在Java中用于创建不可变的类不可重写的方法 以及不可变的变量(常量)。
  • 使用final可以提供额外的安全性,确保某些重要的值或行为不会被意外或恶意地更改。
相关推荐
Wang's Blog17 分钟前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog19 分钟前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Ivanqhz1 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_2518364572 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程
caoerzhong2 小时前
JeeWMS 开源仓库管理系统全景解读:一套 Java WMS 如何把 WMS/OMS/BMS/TMS 装进同一个系统
java·开源
曹牧2 小时前
Java集合框架:List、ArrayList、Map 和 HashMap
java
顾城猿2 小时前
STOMP 协议
java
郑州光合科技余经理3 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
知识分享小能手3 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
+VX:Fegn08953 小时前
计算机毕业设计|基于springboot + vue旅游管理系统(源码+数据库+文档)
java·开发语言·vue.js·spring boot·课程设计