最直接、最常用的方式是使用 final 关键字修饰方法;final 方法可继承调用但不可重写,适用于核心逻辑等场景;final 类不可被继承;static 方法属隐藏而非重写;private 和包级私有方法因不可见而无法重写。

在 Java 继承体系中,防止方法被子类重写,最直接、最常用的方式是使用 final 关键字修饰该方法。
用 final 修饰方法
这是标准且明确的手段。一旦方法被声明为 final,子类就无法重写它,编译器会直接报错。
- 语法:在返回类型前加
final,例如public final void calculate() { ... } - 效果:方法可被继承、可被调用,但不能被 override(重写)
- 适用场景:核心逻辑、安全校验、模板方法中的固定步骤等不希望被修改的部分
把整个类声明为 final
如果某个类的设计已定型,不允许任何扩展,可将其整体设为 final。
- 语法:
final class Utility { ... } - 效果:该类不能被继承,自然也就不存在方法被重写的问题
- 典型例子:Java 标准库中的
String、Integer、Math
注意 static 方法不参与重写
static 方法属于类本身,不是实例行为,因此不支持多态意义上的重写。
- 子类可以定义同名
static方法,但这叫“隐藏”(hiding),不是重写 - 通过父类引用调用时,仍执行父类的静态方法;通过子类引用调用,才执行子类的
- 单独用
static虽能规避重写,但语义上不如final明确——它本质是绕开了继承机制,而非禁止重写
其他辅助方式
虽然不是直接阻止重写,但能降低风险或增强封装性:
- 私有方法(private):子类根本看不到,谈不上重写;但它不属于继承链的一部分
- 包级私有(默认访问权限):限制在同一个包内可见,外部包的子类无法访问,从而无法重写
- 组合优于继承:不依赖继承关系复用代码,从根本上避开重写问题
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











