private < default < protected < public,即最严格到最宽松的顺序:private仅类内可见,default限同包,protected加不同包子类,public无限制;顶级类只能用public或default。

Java 中访问权限修饰符的严格程度,是从最严格(限制最多)到最宽松(限制最少)排序的。这个顺序直接对应成员可被访问的范围大小:越严格,能访问的地方越少;越宽松,能访问的地方越多。
private < default < protected < public
这个不等式表示权限由小到大(即严格程度由高到低)的完整顺序。
各修饰符的严格程度说明
private(最严格)
只能在声明它的那个类内部访问。同包其他类、子类(无论是否同包)、外部类,一律不可见。用于隐藏核心数据和内部逻辑,比如账户余额、密码字段、私有工具方法。
default(包私有,次严格)
不写任何修饰符时自动生效。同一包内的所有类都能访问,但跨包即不可见——哪怕那个类是子类也不行。适合模块内协作,例如工具包中的辅助类或方法。
protected(中等严格)
比 default 宽松,多了“不同包的子类”这一访问通道。也就是说,它允许:
• 同一包内任意类访问
• 不同包中继承了该类的子类访问
但不同包的非子类依然不能访问。常用于父类中留给子类扩展的方法或字段。
public(最宽松)
没有任何访问限制。只要能通过 import 引入该类(对类而言),或能访问到该类的实例/类型(对成员而言),就可以调用。适用于对外提供的 API、main 方法、公共工具方法等。
使用时的关键注意点
- 顶级类(非内部类)只能用 public 或 default;不能用 private 或 protected 声明
- 内部类可以使用全部四种修饰符
- 接口中的方法默认是 public,字段默认是 public static final,不能加其他修饰符
- 过度使用 public 会削弱封装性;误用 protected 可能导致非子类误以为能访问(实际不行)
不复杂但容易忽略。
立即学习“Java免费学习笔记(深入)”;


















