原文连接:http://blog.sina.com.cn/s/blog_7de00ff60102xffx.htmlhtml
若是想要在外部类的导出类(子类)中创建该外部类的为protected权限的内部类的实例,须要把该protected权限的内部类的构造器的权限设置为public.不然,编译器将报错。htm
咱们可能会理所固然地认为,既然我继承了该外部类,我就有权限去创建这个外部类的成员——protected权限的内部类的实例,实际上并不是如此。因为咱们没有显式地去创建该protected权限的内部类的构造器,编译器就会在编译的时候自动帮该protected内部类创建一个默认构造器,默认构造器的访问权限也将和该内部类的权限一致,同为protected,也就是说只有该内部类的导出类(子类)和与该内部类同一个包的类才有权限调用protected权限的构造器。而要建立一个类的实例,必须经由构造器,既然只有该内部类的导出类(子类)和与该内部类同包的类才能调用它的构造器的话,那么也就说明,按照默认状况(不本身创建public权限的该内部类的构造器),只有该内部类的导出类(子类)和与该内部类同包的类才能创建它的实例。blog
综上,若是咱们想要经过继承某外部类来创建该外部类的成员——protected权限的内部类的实例的话,请把该protected权限的内部类的构造器的权限设置为public。继承