访问控制修饰符
访问控制修饰符决定类、属性、方法、构造方法能被哪些代码访问,是封装的语法基础。
四种访问范围
| 修饰符 | 同一类 | 同一包 | 子类 | 任意位置 |
|---|---|---|---|---|
private | 可以 | 不可以 | 不可以 | 不可以 |
| 默认(不写) | 可以 | 可以 | 不同包子类不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
使用建议
- 字段优先
private,通过方法控制访问。 - 对外稳定 API 使用
public。 - 只给子类使用的扩展点可以用
protected。 - 包内协作但不想对外暴露时使用默认访问权限。
类的访问权限
顶层类只能使用:
public- 默认访问权限
不能把顶层类声明为 private 或 protected。
和继承的关系
子类能否访问父类成员,取决于成员访问权限和包位置:
private成员不能被子类直接访问。protected成员可被子类访问,适合作为继承扩展点。- 方法重写时,子类方法的访问权限不能比父类更严格。