2011-08-08 88 views
3

可能重复:
protected/public Inner Classes访问修饰符的内部类

我相信这个问题已经被问过,但我没能找到一个,所以我会问...

我很好奇私人(保护)和公共内部类之间有什么区别。我能够从使用外部类对象的包含类之外使用它们。

public class A{ 
    private class B{ 

    } 

    public static void main(String[] args){ 
    A a = new A(); 
    B b = a.new B(); 
    } 
} 
+0

是它允许在java中使用'a.new B()'? –

+1

@ Eng.Fouad:是的,这就是如何在Java中实例化非静态内部类。 –

+0

还允许使用简称新A()。new B() –

回答

6

私有内部类仍然可以在定义它的类中访问。

如果你有另一个类,B是不可见的:

public class C { 
    public static void main(String[] args){ 
    A a = new A(); 
    B b = new B(); // compile error 
    } 
} 
+0

哦,我明白了......谢谢! – Headshota

2

其实,你是A类还在里面,因为主要方法是类的静态方法的