final修饰类表示该类不可被继承,修饰方法表示该方法不可被重写;final类中方法自动为final但字段不是;final与abstract互斥,因二者语义相反。

final 修饰类表示该类不能被继承,修饰方法表示该方法不能被子类重写。
final 修饰类:禁止继承
用 final 声明一个类,意味着它没有子类,Java 编译器会阻止任何类去继承它。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 语法:final class ClassName { ... }
- 典型例子:Java 中的 String、Integer 等包装类都是 final 类
- 适用场景:类设计已完备、不希望被扩展(如工具类、安全敏感类)、或为防止破坏不可变性(如 String 的不可变语义)
- 注意:final 类中的方法自动成为 final(无需显式加 final),但字段不是 final,仍可修改——除非字段本身也声明为 final
final 修饰方法:禁止重写
在方法声明前加 final,表示子类可以继承该方法,但不能覆盖(override)它。
- 语法:public final void methodName() { ... }
- 常见用途:确保核心逻辑不被改变(如模板方法模式中的骨架方法)、提升 JVM 优化可能性(可能内联调用)
- 注意:final 方法仍可被重载(overload),只是不能被重写(override);private 方法天然具有 final 语义(因不可见,子类无法重写),但不强制写 final
- 错误示例:若父类方法是 final,子类中再写同签名方法,编译直接报错 “Cannot override the final method”
和 abstract 的互斥关系
final 和 abstract 是语义相反的关键字,不能共存。
- final 类不能被继承 → abstract 类必须被继承才有意义 → 所以 abstract class 不能是 final
- final 方法不能被重写 → abstract 方法必须被重写 → 所以 abstract 方法 不能是 final
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










