Java访问权限修饰符定义清晰可见边界:private限本类、默认限同包、protected限同包+子类、public全局可见;核心是理解各修饰符的逻辑范围与设计意图。

Java 面向对象中,访问权限修饰符不是“开关式”的控制工具,而是定义清晰的可见边界——它决定谁能在什么上下文中看到、调用或继承某个类或成员。关键不在于死记“能还是不能”,而在于理解每种修饰符划定的**逻辑范围**和**设计意图**。
private:只对本类开放
这是最严格的限制。被 private 修饰的字段、方法或内部类,仅在声明它的那个类内部可访问。
- 同包其他类、子类(无论是否跨包)都不可见,也不能通过 super 或实例引用访问
- 适合封装敏感状态,比如密码、余额、缓存数据;也适合隐藏实现细节,如校验逻辑、初始化辅助方法
- 若需外部安全读写,应提供 public 的 getter/setter 或行为方法,而非暴露字段本身
默认(无修饰符):只信同一个包
没写任何修饰符时,Java 默认赋予“包级私有”权限。它比 private 宽松,但比 protected 更聚焦协作场景。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 仅同一包下的所有类可访问,跨包即不可见,与继承关系无关
- 常用于模块内部协作,比如订单模块中 OrderService、OrderValidator 等共享的工具方法或配置类
- 顶层类也可使用该权限(文件名无需匹配类名),但不能用在外部类上——它天然适合封装模块边界
protected:给同包 + 子类留门
它带“血缘意识”:同一包内全部可见,不同包中则只对子类开放。
立即学习“Java免费学习笔记(深入)”;
- 子类可以访问自己继承来的 protected 成员,但不能访问父类实例上的同名 protected 成员(除非通过 this 或 super)
- 适合父类中希望被子类复用、但不想暴露给任意类的钩子方法、回调入口或模板方法
- 不建议直接暴露 protected 字段,仍推荐用 protected 方法封装操作,保持封装性
public:明确承诺的对外契约
这是最宽泛的权限,代表你主动公开、愿意长期维护的接口。
- 任何类、任何包、任何关系都能访问——包括跨包子类、无关第三方类
- 类若需被其他包使用,必须声明为 public,且 .java 文件名必须与类名一致
- 慎用 public 字段:常量(public static final)可以,但可变状态字段应避免;public 方法一旦发布,修改签名易破坏调用方,设计时需考虑兼容性

















