子类不能重写父类的private方法,因为private方法仅在本类内部可见,子类无法继承或访问,因此在子类中定义同名方法只是新增方法而非重写,不具有多态性,也无法通过父类引用调用,尽管编译通过,但实际属于方法隐藏而非覆盖。

子类不能重写父类的private方法。
原因如下:
private方法的访问权限仅限于其所在类的内部,子类无法继承或访问父类的private方法。既然子类看不到这个方法,也就无法进行重写(override)。
关键点说明:
• 不可继承:private 方法不会被子类继承,因此在子类中定义一个与父类 private 方法同名的方法,实际上是定义了一个新的方法,而不是重写。• 无多态性:由于不是重写,调用时不会发生动态绑定,即使通过父类引用指向子类对象,也无法触发子类中的该方法(因为本来就不算覆盖)。
• 编译通过但非重写:你可以在子类中写一个和父类 private 方法签名完全相同的方法,Java 不会报错,但这只是“方法名冲突消除”或“方法隐藏”,不属于重写。
示例代码:
class Parent {
private void show() {
System.out.println("Parent's private show");
}
}
class Child extends Parent {
public void show() { // 这不是重写,而是新方法
System.out.println("Child's show");
}
}
public class Test {
public static void main(String[] args) {
Child c = new Child();
c.show(); // 输出: Child's show
Parent p = new Child();
// p.show(); // 编译错误!Parent 的 show 是 private,不可见
}
}
从上面例子可以看出,Child 类中的 show() 方法并没有真正覆盖父类的方法,只是恰好名字一样而已。
立即学习“Java免费学习笔记(深入)”;
基本上就这些——private 方法封装性强,但也意味着它对子类完全不可见,自然谈不上重写。










