温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Private 私有方法能重写吗

发布时间:2026-07-24 01:32:56 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

Java 中,private 方法不能被重写(override)。原因和细节如下:


一、为什么 private 方法不能重写?

1️⃣ private 方法对子类不可见

  • private 修饰的方法 只能在当前类中访问
  • 子类 根本“看不到” 父类的 private 方法
  • 既然看不到,就谈不上“重写”
class Parent {
    private void method() {
        System.out.println("Parent private method");
    }
}

class Child extends Parent {
    // 这不是重写,而是一个全新的方法
    private void method() {
        System.out.println("Child private method");
    }
}

2️⃣ 重写的前提是“多态调用”

方法重写必须满足:

  1. 子类能访问父类方法(非 private)
  2. 通过 父类引用调用子类对象的方法
  3. 运行时根据实际对象类型决定调用哪个方法(动态绑定)

private 方法:

  • 编译期就绑定(静态绑定)
  • 不参与多态

二、private 方法 + 继承的真实情况

✅ 子类可以定义“同名方法”,但不是重写

class Parent {
    private void show() {
        System.out.println("Parent show");
    }
}

class Child extends Parent {
    private void show() {
        System.out.println("Child show");
    }
}

这里是:

  • 方法隐藏(不是重写)
  • 两个完全独立的方法

三、对比:哪些方法可以重写?

修饰符 能否重写 说明
private ❌ 不能 子类不可见
final ❌ 不能 禁止重写
static ❌ 不能 静态绑定
default ✅ 可以 接口默认方法
protected / public ✅ 可以 正常重写

四、private 方法可以被“间接”调用吗?

可以,通过 父类 public / protected 方法间接调用

class Parent {
    private void method() {
        System.out.println("Parent private method");
    }

    public void call() {
        method(); // 在父类内部调用
    }
}

class Child extends Parent {
}

new Child().call(); // 输出:Parent private method

五、总结一句话 ✅

Java 中 private 方法不能被重写,因为子类无法访问,也不参与多态。

如果你愿意,我也可以帮你对比:

  • private vs final
  • 方法重写 vs 方法隐藏
  • 或结合 接口 / 抽象类 / Lambda 讲实际应用场景
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI