访问控制修饰符

访问控制修饰符决定类、属性、方法、构造方法能被哪些代码访问,是封装的语法基础。

四种访问范围

修饰符同一类同一包子类任意位置
private可以不可以不可以不可以
默认(不写)可以可以不同包子类不可以不可以
protected可以可以可以不可以
public可以可以可以可以

使用建议

  • 字段优先 private,通过方法控制访问。
  • 对外稳定 API 使用 public
  • 只给子类使用的扩展点可以用 protected
  • 包内协作但不想对外暴露时使用默认访问权限。

类的访问权限

顶层类只能使用:

  • public
  • 默认访问权限

不能把顶层类声明为 privateprotected

和继承的关系

子类能否访问父类成员,取决于成员访问权限和包位置:

  • private 成员不能被子类直接访问。
  • protected 成员可被子类访问,适合作为继承扩展点。
  • 方法重写时,子类方法的访问权限不能比父类更严格

相关:子类与继承多态