Java中final关键字的学习
final关键字
在Java编程语言中,final
关键字是一个非常重要的概念,它用于表示一个变量、方法或类是不可变的或不能被进一步修改的。以下是final
关键字的几种常见用法:
1. 修饰变量
- 常量:
final
修饰的变量称为常量,一旦赋值后就不能被改变。这适用于基本数据类型和对象引用。对于基本数据类型,final
保证了变量的值不可变;对于对象引用,final
保证了引用不能指向另一个对象,但对象本身的状态(即对象的属性)是可以改变的。 - 成员变量:对于类的成员变量,如果声明为
final
,则必须在构造方法或初始化块中对其进行初始化,之后就不能再被修改。 - 局部变量:
final
也可以修饰局部变量,一旦赋值后,该变量的值就不能被改变。
2. 修饰方法
- 使用
final
修饰的方法表示该方法不能被子类重写。如果尝试在子类中重写该方法,编译器将报错。这有助于保护方法不被意外修改,确保方法的稳定性和可预测性。
3. 修饰类
- 当一个类被声明为
final
时,表示该类不能被继承。这通常用于那些不希望被扩展的类,如工具类、枚举类型等。如果尝试继承一个final
类,编译器将报错。
4. 修饰方法参数
- 在方法定义中,
final
也可以用来修饰参数。这表示在方法体内,参数的值(对于基本数据类型)或引用(对于对象类型)不能被改变。这有助于保证方法参数的不可变性,防止在方法执行过程中被意外修改。
注意事项
final
修饰的变量必须在声明时或构造方法中初始化(对于成员变量),否则编译器会报错。final
修饰的引用类型变量不能指向另一个对象,但对象本身的状态(即对象的属性)是可以修改的。final
修饰的方法不能被重写,但可以被重载。final
修饰的类不能被继承,但类中的成员变量和方法(除了private
方法,它们隐式地被指定为final
)可以被继承并访问。
示例
public final class FinalClass {
private final int number = 10; // final成员变量,必须在声明时或构造方法中初始化
public final void show() { // final方法,不能被重写
System.out.println("This is a final method.");
}
public void anotherMethod(final String param) { // final参数,参数值在方法体内不能改变
// param = "another value"; // 这将导致编译错误
System.out.println(param);
}
}
public class Test {
public static void main(String[] args) {
FinalClass fc = new FinalClass();
fc.show(); // 调用final方法
fc.anotherMethod("Hello, final parameter!"); // 调用带有final参数的方法
}
}
在这个示例中,FinalClass
是一个final
类,不能被继承。它有一个final
成员变量number
和一个final
方法show()
。anotherMethod()
方法接受一个final
参数param
,该参数在方法体内不能被重新赋值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南