public class TestClass {
public class WuQi{
private void WuQi(){
System.out.println("WuQi");
}
public void akGun(){
System.out.println("WuQi");
}
protected void MaFengGun(){
System.out.println("MaFengQiang");

}
private class Qiang{
private void ShaYing(){
System.out.println("WuQi");
}
public void JuJiBuQiang(){
System.out.println("WuQi");
}
protected void BuQiang(){
System.out.println("MaFengQiang");

}
protected class Pao{
private void JiaNong(){
System.out.println("WuQi");
}
public void JuPao(){
System.out.println("WuQi");
}
protected void LieChePao(){
System.out.println("MaFengQiang");

}
}
然后写了一个测试函数与此类在同一个包中
TestClass testClass = new TestClass();
然后testClass. 不可以访问上面说的类 但是如果这样:
TestClass.WuQi
就可以访问 这个类 我想问下这是为什么?

解决方案 »

  1.   

    这样是可以的:
    TestClass testClass = new TestClass();
    testClass.new WuQi().akGun();
    testClass.new Pao().JuPao();TestClass.Qiang类型不可见,因为Qiang这个内部类的访问限制符为private。你想着private的field不能直接访问,只能通过public的getField()方法在外部访问,那么处于同一位置的private内部类也是如此,只能在类内部使用一下了。