关于protected修饰符的问题

protected修饰符只会在同一个包内才可以访问
加入同时有A包和B包
在A包内有基类father,protected方法

protected void speak()
{
    System.out.println("大家好");
}

那么在A包内的类及A的子类都可以访问
如果B包内有一个类son继承了father类

此时如果son类没有重写speak类
那么在B包内的son类的实例还是无法访问speak方法
但是在A包内的son的实例们可以访问speak方法

如果son类重写了speak方法
此时如果在son类还是protected修饰符
那么在A包内如果

son s=new son();

还是无法访问speak方法,因为此时speak方法在B包,不同包无法访问。
但是,如果

father s=new son();

此时就可以调用son重写的speak方法

在B包中同理
如果以son声明可以调用,以father调用则不可

你可能感兴趣的:(java-基础)