java访问权限——protected为啥这么异常?
权限表:https://blog.****.net/lmlcode/article/details/85775890
目录结构
|package1
----|SonDemo
|package2
----|SonDemo2
----|ParentDemo
case1: default的类不能被不同包下的类继承(将ParentDemo设为default权限时)
case 2:同包下子类中的权限
case 3:同包下子类中的父类实例拥有权限
case 4:不同包下子类拥有权限
case 5:不同包下父类拥有权限(Question: 为什么没有protected??)
解释:
权限是为了保证不同级别/不同需求的人能够访问 访问到其所需要的方法,访问不到其不必须的方法。一方面为了代码安全,一方面也是为了精简开发。
权限的开放基本单元是针对类来开放的。即:一个类满足某种条件下,可以调用其父类或其他类的一些方法或变量。所以不同包下的子类是可以调到父类的protected方法的(case 4)。 需要注意的是:类满足条件可以调用方法/变量,不代表类的实例可以调用自己的protected方法/变量,这也是case 5 的结果原因。
case 6: 不同包下调用实例的protected方法(其实case 5就相当于case 6,只不过父类在心中的特殊性总觉得可以调到,其实不然)