私有方法可以在java的类外部访问

时间:2011-07-18 15:14:42

标签: java

我在net beans中尝试了以下代码我期待错误,但我没有收到任何错误

class B {

    private void method() {
    }

    public static void main() {
        B b = new B();
        B c = new C();
        b.method();
        c.method();
    }
}

class C extends B {
}

c.method()尝试访问该方法时,它应该显示错误,但在NetBeans中它没有显示。请告诉我这是什么错误。

3 个答案:

答案 0 :(得分:6)

您定义方法的方式是从C.method()内部调用B.main()。由于方法对B是私有的,因此该方法在B.main()内部是可见的,即使该对象的类型为C,它继承自B

答案 1 :(得分:3)

访问检查不是在对象/类级别完成,而是在 范围 级别完成。您可以在B的可访问范围内调用该方法。无论您是在C对象还是B对象上调用它都无关紧要。

答案 2 :(得分:2)

这是因为main方法在类B中声明,并且可以看到所有B个私有方法。

执行c.method()时,IDE知道C extends B并知道mainB内,因此它可以看到私有方法(引用{{1} }})。


这是您在编译的B类(来自Eclipse)上找到的“注册表”。

B