Java四种访问修饰符作用与范围:public最宽松,任何地方可见;protected限同包及不同包子类;default(无修饰符)仅同包可见;private最严格,仅本类内部可访问。

Java 中的访问修饰符是控制类、方法、字段等成员可见范围的核心机制,合理使用它们能有效实现封装——即隐藏内部实现细节,只暴露必要的接口。
public:完全开放,跨包可用
被 public 修饰的成员可在任何地方被访问,包括不同包中的类。它是最宽松的访问级别,适合定义对外提供的 API 入口,比如工具类的静态方法或公共接口的方法。
- 类本身若声明为 public,必须与文件名一致,且一个 .java 文件最多一个 public 类
- 接口中的方法默认就是 public(即使不写),字段默认是 public static final
- 慎用:不要轻易将字段设为 public,否则破坏封装性
protected:包内 + 子类可见
protected 允许同一包内的所有类访问,也允许其他包中该类的子类访问。它常用于设计可继承的类结构,让子类能复用或扩展父类的逻辑,同时限制外部无关类直接调用。
- 子类即使在不同包中,也能访问父类的 protected 方法或字段
- 不能用于顶层类(只能用于成员变量、方法、构造器)
- 典型场景:模板方法模式中,父类定义 protected 的钩子方法供子类重写
默认(包级私有):仅限同包访问
不加任何修饰符时,成员具有包级访问权限(也称 package-private)。这是 Java 的默认访问级别,比 protected 更严格,但比 private 宽松。
立即学习“Java免费学习笔记(深入)”;
- 同一包下的所有类(无论是否继承关系)都能访问
- 适合模块内部协作,比如一组紧密配合的工具类或 DTO 辅助类
- 比 public 更安全,比 private 更灵活,是“恰到好处”的中间选择
private:最严格的封装,仅本类可访问
private 是最强的封装手段,确保成员只能在声明它的类内部使用。这是实现“数据隐藏”的基础,也是面向对象中封装原则的直接体现。
- 字段几乎都应设为 private,并通过 public getter/setter 控制读写逻辑(如校验、懒加载)
- 辅助方法、内部状态管理逻辑也建议设为 private,避免被误调用
- 内部类可以访问外围类的 private 成员,这是 Java 特有的便利设计
封装不是越私密越好,而是根据职责和协作边界选择合适级别。多数情况下,字段用 private,提供受控的 public 接口;工具方法可设为 default 或 public;继承体系中用 protected 留出扩展点。关键在于明确“谁需要访问”和“为什么需要”。


















