package test4;
public class Test4{
protected class Inner{}
}package test5;
import test4.*;
class Test5 extends Test4{
    public static void main(String [] args){
    Test4 test = new Test4();
    test.new Inner();
       }
}编译时提示:test5/Test5.java:6:inner() 可以在test4.Test4.Inner中访问 protected
             test.new Inner();朋友们帮忙看看,谢谢!

解决方案 »

  1.   

    protected修饰属性的方法和属性只能被子类和自身调用
      

  2.   

    package test4;
    public class Test4{
    public Inner getInner() {
            return new Inner();
        }
    protected class Inner {}
    }package test5;
    import test4.*;
    class Test5 extends Test4{
     Inner innner = getInner();
      public static void main(String [] args){
      Test4 test = new Test4();
        }
    }在不同包内的继承类,不能访问受保护内部类的构造器,但是可通过其所在类的get方法获取