内部类的访问修饰符

5

可能重复:
受保护的/公共内部类

我确定这个问题已经被问过了,但是我没有找到一个,所以我会问......

我想知道私有(受保护)和公共内部类之间的区别。使用外部类对象,我可以从包含类中使用两者。

public class A{
   private class B{

   }

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

在Java中允许使用a.new B()吗? - Eng.Fouad
2
@Eng.Fouad:是的,这就是在Java中实例化非静态内部类的方法。 - Ken Wayne VanderLinde
也可以使用短形式 new A().new B()。 - Mr.Q
2个回答

7

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

如果您有另一个类,则B不可见:

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

这已经是事实,因为B不是静态的... - Fulluphigh

3
实际上,你仍然在A类中,因为main方法是A类的静态方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接