Now I wonder what is the meaning of the private modifier here ??
If you like, you can imagine your static InnerClass as some sort of "static variable" of OuterClass. The analogy is not so farfetched; given a static variable
static int someStaticVariable;
defined in OuterClass, it only makes sense to access someStaticVariable
outside of OuterClass's class scope as OuterClass.someStaticVariable.
Now, this InnerClass can instantiate objects. How accessible are these InnerClass objects to outside classes? These are defined by the access modifiers you set for your inner class declaration. Since you've declared InnerClass as private, outside classes like TestClass has a much of a chance accessing InnerClass objects as accessing OuterClass.someStaticVariable, if you declared
private static int someStaticVariable;
in your OuterClass declaration.
-anthony