温馨提示×

温馨提示×

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

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

Java Private 私有方法如何调用

发布时间:2026-07-24 00:02:55 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

Java 中,private 方法只能在定义它的类内部被调用,外部类(包括子类)无法直接访问。下面分几种常见情况说明如何“调用” private 方法。


一、最常见:在同一个类中直接调用 ✅

public class Demo {

    private void sayHello() {
        System.out.println("Hello");
    }

    public void test() {
        sayHello(); // ✅ 同一个类中可以直接调用
    }
}

二、通过公共方法间接调用 ✅(推荐)

这是最常用、最规范的方式。

public class Demo {

    private void sayHello() {
        System.out.println("Hello");
    }

    public void callPrivate() {
        sayHello(); // 公共方法内部调用 private 方法
    }
}

外部调用:

Demo d = new Demo();
d.callPrivate();

这是设计 private 方法的正确方式,而不是强行突破访问限制。


三、通过反射(Reflection)调用 private 方法 ⚠️(不推荐,除非必要)

如果你必须在类外部调用 private 方法(如测试、框架、调试),可以使用反射。

示例

import java.lang.reflect.Method;

class Demo {
    private void sayHello() {
        System.out.println("Hello");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        Demo obj = new Demo();

        Method method = Demo.class.getDeclaredMethod("sayHello");
        method.setAccessible(true); // 关键:取消访问检查
        method.invoke(obj);
    }
}

⚠️ 注意风险

  • 破坏封装性
  • 可能触发 SecurityException
  • 反射代码脆弱,方法名改了就崩

四、子类不能调用父类的 private 方法 ❌

class Parent {
    private void test() {}
}

class Child extends Parent {
    public void call() {
        test(); // ❌ 编译错误
    }
}

原因:

  • private 不参与继承
  • 子类根本“看不到”这个方法

五、构造方法 / static 方法中的 private 方法

1️⃣ 构造方法中调用

public class Demo {

    private void init() {}

    public Demo() {
        init(); // ✅
    }
}

2️⃣ private static 方法

class Demo {

    private static void staticMethod() {
        System.out.println("static");
    }

    public static void call() {
        staticMethod(); // ✅
    }
}

六、总结 ✅

场景 是否可行 说明
同类中直接调用 正常用法
通过 public 方法调用 推荐
反射调用 特殊场景
子类直接调用 private 不继承
外部类直接调用 访问权限不允许

如果你有具体使用场景(如单元测试、Spring、内部类、继承问题),可以贴代码,我可以帮你选最合适的方案。

向AI问一下细节

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

AI