private修饰的方法不能被重写:子类中同名同参方法是独立新方法;@override注解编译报错即不可重写;private方法不继承,子类无法通过super调用;运行时调用不体现多态,始终绑定父类实现。

不能被重写。判断标准非常明确:只要父类方法用 private 修饰,子类中任何同名、同参数的方法都不是重写,而是独立定义的新方法。
看编译器是否允许 @Override 注解
在子类方法上加上 @Override,如果编译报错 “Method does not override method from its superclass”,就说明该方法根本不可被重写——这是最直接、最可靠的判断依据。
看父类方法能否被子类继承
重写的前提是继承。而 private 方法不参与继承链:
- 子类源码中无法通过
super.xxx()调用该方法 - 子类编译时完全“看不见”父类的 private 方法
- 即便子类写了同签名方法,JVM 字节码里它们是两个毫无关联的符号
看运行时调用行为是否体现多态
如果父类有一个 public 方法内部调用了自己的 private 方法,那么即使子类定义了同名 private 方法,执行父类 public 方法时仍会固定调用父类的 private 实现:
- 例如
Base.run()调用Base.work(),哪怕Sub也定义了work(),new Sub().run()输出仍是Base.work - 这说明调用在编译期就静态绑定,未进入运行时动态分派流程
看访问权限改动后的变化
把父类方法从 private 改成 protected 或 public 后,子类同名方法立刻能加 @Override 且运行结果改变——这种“一改就生效”的反向验证,恰恰证明原 private 方法因不可见而根本不在重写机制范围内。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











