class A { public void func() { A a=new A(); C c=a.new C(); } public static void main(String[] args) { A a=new A(); C c=a.new C(); //实例内部类访问需要【外部类名对象.内部类对象】,所以要两个new,可以理解为静态内部类衣着于外部类实例上的 c=new A().new C(); B b=new A.B(); //静态内部类访问需要【外部类名.静态内部类对象】,所以一个new,可以理解为静态内部类依着于外部类上 } static class B { } class C { } }