0%

Java包权限与继承

权限

private 默认访问权限 protected public
类本身
相同包子类
相同包非子类
不同包子类
不同包非子类

总结:

  1. 子类继承父类总是可以访问父类protected和public的属性和方法,如果相同包,会更进一步获取默认访问权限的属性以及方法的访问权限.
  2. 非子类不同包只能访问public的属性和方法,如果相同包,能访问非private修饰的属性和方法.
  3. 从内存上看,子类继承父类是将子类与父类合并生成新类,子类拥有父类所有的属性和方法,只是不能访问父类私有的,可能还有默认访问权限的.

继承(注解)

子类是否可以继承父类中的注解,不同情况如下:

无@Inherited 有@Inherited
类上的注解
抽象方法上的注解(子类已实现)
普通方法上的注解(子类能继承的)
子类覆写父类的方法

总结:

  1. @Inherited 只能决定类上的注解是否可以继承
  2. 方法或者属性是否继承到注解只决定于该方法或属性本身(如果子类已覆写则看子类,否则看父类)
您的支持是对我最大的动力 (●'◡'●)