应该因为他们都在一个包里啊!protected天生具有friendly的访问权限,当然,java里没有说出这个friendly的访问权限,但是实际上是存在的,也就是在同一个包内可以访问,比如不给类加上限定符,就默认为包可访问的.但是,在继承的时候,如果没有设定为protected,默认为friendly,这样,在其他包中集成了的类就不能访问了,所以在进行继承的时候应该加上protected,好让包里包外的都能访问

解决方案 »

  1.   

    谢谢小声点的解释,我觉得protected和friendly 是有交叉的,protected同包是不能访问的嘛
      

  2.   

    用protected声明成员变量和方法,在本包中具有可见性(换言之就是可以访问和调用);而在其他包中,只有继承后其子类中有可见性(子类中可以访问子类对象继承过来的protected成员,而子类中声明的父类对象则不能访问!!)
      

  3.   

    JAVA中的访问控制的四个级别从大到小依次是:
    public > protected > default(friendly) > privateprotected成员也提供包内访问.
      

  4.   

    用protected声明成员变量和方法,在本包中具有可见性(换言之就是可以访问和调用);而在其他包中,只有子类中有可见性,子类中可以访问子类对象继承过来的protected成员.