final
在 java 中有什么作用?
修饰变量
- 修饰基本数据类型变量:
- 当用final修饰基本数据类型变量时,该变量就变成了常量 ,其值在初始化后不能被改变。
java
final int num = 10;
// num = 20; // 这行代码会导致编译错误,因为 num 是 final 修饰的常量不能被重新赋值。
- 修饰引用类型变量:
- 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可以提供额外的安全性,确保某些重要的值或行为不会被意外或恶意地更改。