我学习了protected修饰符,父类中protected成员变量和方法可以被子类在包外访问,但是下面这种情况是不是属于包外的子类呢:Base类为父类,在base包中;Sub类继承Base,在sub包中,没有问题;Sub类下面还定义了一个Suub类,也继承Base,但是不能调用Base的方法,代码如下
Base.java:
package demo;
import sub.Sub;
public class Base{
protected void ss(){
System.out.println("ss");
}
}
Sub.java:
package sub;
import demo.Base;public class Sub extends Base{
public static void main(String[] args){
Sub s1 = new Sub();
s1.ss();  //Sub可以调用分类的方法
Suub s2=new Suub();
// s2.ss(); //Suub不能调用父类的方法
}
}
class Suub extends Base{

}应该怎么解释呢?谢谢了PS:晚上可能才能回来回复

解决方案 »

  1.   

    包外的子类可以访问,是指包外的子类自己的方法中可以访问
    Suub s2=new Suub();
    s2.ss(); //这个调用不是在Suub类的方法中,是在Sub类的方法中,所以不能直接调用LZ再好好体会一下这其中的区别
    class Suub extends Base{
        public void xx() {
            ss(); //这个是在Suub自己的方法中,所以可以调用,包外的子类可以访问指的是这个意思
        }
    }
      

  2.   

    谢谢1楼,好像有点明白了,我再体会一下
    我试试怎么发代码class Suub extends Base{
        public void xx() {
            ss(); 
        }
    }