【Java 入门 Day12】 三大修饰符(下):final 篇
2026/6/10 8:02:34 网站建设 项目流程

(续上一篇,今天扒完 final 这个 “终极钉子户”)

家人们!上一篇咱们唠了 abstract 和 static,今天必须把 final 这个 “Java 倔驴” 给盘明白!final 翻译过来是 “最终的、最后的”,被它修饰的东西,那就是 “钉死在墙上的钉子”,谁都别想改,主打一个 “油盐不进、死磕到底”。

一、final 修饰变量:只能赋值一次的 “一次性水杯”

被 final 修饰的变量,不管是局部变量、实例变量还是静态变量,都变成了常量,只能赋值一次,赋值之后就再也改不了,像一次性水杯,用一次就不能再装别的东西了。

1. final 修饰局部变量:方法里的 “一次性水杯”

方法里的局部变量被 final 修饰后,只能赋值一次,赋值之后就固定了。比如你在方法里写final int a = 10;,后面再写a = 20;,编译器直接给你报错,说 “你这杯子用过了,不能再装水了”。

2. final 修饰实例变量:类里的 “定制水杯”

实例变量被 final 修饰后,编译器不会给它默认值,必须手动初始化,而且只能赋值一次。初始化的时机有三种:

  • 声明的时候直接赋值:final int a = 10;,就像定制水杯出厂就印好了图案,改不了。
  • 在构造方法里赋值:每个构造方法都得给它赋值,不然编译器会说 “你这水杯没印图案,没法用”。
  • 借助动态代码块赋值:{ a = 10; },在类加载的时候给它赋值,也是一次性的。

3. final 修饰静态变量:全类共用的 “公共水杯”

静态变量被 final 修饰后,就是全类共用的常量,初始化时机有两种:

  • 声明的时候直接赋值:static final int PI = 3.14;,比如咱们常用的圆周率,就是这种常量,全类共用,谁都不能改。
  • 借助静态代码块赋值:static { PI = 3.14; },类加载的时候给它赋值,之后就固定了。

重点提醒:final 修饰的引用,地址不能改!

比如你写final Student s = new Student();,这个s引用里存的是对象的地址,被 final 修饰后,这个地址就不能改了,你不能再让s指向另一个 Student 对象。但注意!对象里的属性是可以改的!就像你买了个带图案的水杯,水杯的地址(位置)不能变,但你可以往里面装不同的水,对象的属性就是 “水杯里的水”,可以随便改。


二、final 修饰方法:只能被继承、不能被重写的 “祖传秘方”

被 final 修饰的方法,就像老祖宗传下来的秘方,子类可以继承,但绝对不能改配方!

  • 语法:public final void method() {},方法前面加个 final,子类继承后,不能重写这个方法,只能直接用。
  • 为啥要这么做?就是怕子类乱改父类的核心逻辑,比如 Java 里的一些工具类方法,都是 final 的,防止子类重写搞出 bug。

三、final 修饰类:不能被继承的 “绝户类”

被 final 修饰的类,就是 Java 里的 “绝户类”,没有子类,谁都不能继承它!

  • 语法:final class 类名 {},加了 final 之后,这个类就断了传承,只能自己用,不能被继承。
  • 咱们常用的StringSystemMath类,都是 final 类!为啥?因为这些类是 Java 的核心类,要是被随便继承修改,整个程序都可能出问题,所以直接用 final 锁死,不让别人改。

四、三大修饰符总结:三个 “性格迥异” 的工具人

好了家人们!Java 这三个修饰符的套路全给你扒完了,抽象的、共享的、倔驴的,各有各的用处,再也不用写代码的时候被它们搞心态了!要是还有啥没看懂的地方,评论区唠唠,我给你掰开揉碎了讲明白!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询