【每日Java】Java权限修饰符的权限访问逻辑矛盾问题

Java修饰符的权限,即:private < default < protected <public

                          同类      同包      子类      所有类
 *  private             √            
 *  default             √           √       
 *  protected         √           √          √
 *  public               √           √          √              √

private 、 protected 、public我们先不讨论其访问,我们着重讨论default的访问权限。

如果没有修饰符Java就将它默认是default类型的成员变量,如:int age; 。如果加了default则编译时会报错。

按照权限修饰符的定义,default型的成员变量是不能够在子类中被访问的,但是,事实上是不是如此呢?其实不然,这里缺少了一个限制条件,那就是子类和父类不在同一包中时,default型的成员变量是不能够在子类中被访问。即是说,如果子类和父类在同一包中,那么父类的default型的成员变量是能够被子类访问的。

所以在进行权限判断的时候,要先判断是不是同类,再判断是不是同包,再判断是不是子类。如果满足条件即可访问,不用再往后判断。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值