Java——final关键字
3.3 final关键字
3.3.1 final的定义
在Java中声明类、属性和方法时,可使用关键字final来修饰,表示“最终”。
①final标记的类不能被继承。提高安全性,提高程序的可读性。
String类、System类、StringBuffer类
②final标记的方法不能被子类重写。
Object类中的getClass()。
③final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
final标记的成员变量不能使用默认初始化,必须在声明的同时或在每个构造方法中或代码块中显式赋值,然后才能使用。final double PI=3.14;
变量用static final修饰:全局常量。比如:Math 类的PI。
④要与finally finalize()区分开。
3.3.2 final基础语法
①final修饰类
final class A{ } class B extends A{ //错误,不能被继承。 } |
中国古代,什么人不能有后代,就可以被final声明,称为太监类
②final修饰方法
class A{ public final void print(){ System.out.println(“A”); } } class B extends A{ public void print(){ //错误,不能被重写。 System.out.println(“尚硅谷”); } } |
③final修饰变量——常量
class A{ private final String INFO = “atguigu”; //声明常量 public void print(){ //INFO = “尚硅谷”; } } |
常量名要大写,内容不可修改。——如同古代皇帝的圣旨。
④ final修饰的成员变量:一般和static联用。
class MyMath{ //常量.java规范中要求所有的常量“大写” //常量:值不可再改变的变量. public static final double PI = 3.14; } |
⑤关键字final应用举例:
public final class Test{ public static int totalNumber = 5 ; public final int ID; public Test(){ ID = ++totalNumber; //可在构造方法中给final变量赋值 } public static void main(String[] args) { Test t = new Test(); System.out.println(t.ID); final int I = 10; final int J; J = 20; J = 30; //非法 } } |
⑥深入final:
final修饰的引用类型,该引用不可再重新指向其他的java对象。但是fianl修饰的引用,该引用指向的对象的属性是可以修改的。
public class Test02{ public static void main(String[] args){ final Customer c = new Customer("JACK",15); //c是final的,无法重新赋值。 //c = new Customer("LUCY",20);//Error c.name = "李四"; c.age = 25; System.out.println(c.name); System.out.println(c.age); } } class Customer{ String name; int age; Customer(String name,int age){ this.name = name; this.age = age; } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!