class ClassA
{
      private int x = 100;
ClassA()
      {  
         InnerB innerB = new InnerB();       //ʹڲ
         InnerA innerA = new InnerA();
         //ڲľ̬
System.out.println("amount of InnerB instance :" + InnerB.getCounter());
      }
      public class InnerA                  //еڲ
{
          InnerA()
          {
System.out.println("this is a public instance of InnerA");
          }
          void show()
          {
x = x +100;
System.out.println("x = " + x);
           }
       }// end of InnerA
      protected static class InnerB            //ܱڲ
      {
          static int counter = 200 ;
          InnerB()
          {
System.out.println("this is a protected instance of InnerB");
counter++;       
}
          static int getCounter()
          {
             return counter;
          }
      }// end of InnerB
      private class InnerC                    //˽еڲ
      {
          InnerC()
          {
System.out.println("this is a private instance of InnerC : " + name);
          }
          static final String name = "inner C";
     }// end of InnerC
}
public class Test4_16                              //
{
      public static void main(String[] args)         
      {
           ClassA a = new ClassA();             //һ
           //һڲ
           ClassA.InnerA innerA = new ClassA().new InnerA();
           innerA.show();                     //ڲķ
//ڲľ̬
System.out.println(ClassA.InnerB.counter);   
           // ClassA.InnerC innerC = new ClassA.InnerC(); //˽ڲ
}
}
