java四种访问修饰符为public、protected、default、private,分别控制成员可见性以实现封装:public全局可见;protected同包及子类可见;default仅同包可见;private仅本类可见。

Java中有四种访问修饰符:public、protected、default(即不写任何修饰符)、private。它们控制类、方法、字段等成员的可见性,核心是实现封装——让代码更安全、更易维护。
public:完全开放
被 public 修饰的成员可以在任何地方被访问,无论是否同包、是否继承关系。
- 类只能用 public 或 default 修饰;public 类必须与文件名一致,且一个文件最多一个 public 类
- 方法和字段设为 public,意味着你明确允许外部任意调用或读写
- 常见于对外暴露的 API 接口、工具类的静态方法(如 StringUtils.isEmpty())
protected:包内 + 子类可见
同一包内的所有类可以访问;不同包中的子类也能通过继承访问,但不能通过父类实例直接访问。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 子类重写父类 protected 方法时,不能降级为 default 或 private,否则编译报错
- 典型用途:模板方法模式中,父类定义流程骨架,把可变步骤声明为 protected,供子类定制
- 注意:new 一个父类对象后,无法通过该对象访问其 protected 成员(即使在子类里)
default(包私有):仅限同包访问
不加任何修饰符时的默认权限,只能被同一个包下的其他类访问,与继承无关。
- 这是被低估但非常实用的权限级别,适合模块内部协作——比如 DAO 层的辅助类、包内共用的工具方法
- 接口中的方法默认是 public abstract,字段默认是 public static final,不能用 default 修饰
- 类本身也可以是 default,此时仅同包类能实例化或继承它
private:严格限制在本类内
最严格的权限,只能在声明它的那个类内部访问,连子类都不行。
- 字段几乎都应优先设为 private,配合 getter/setter 提供可控访问
- 构造器设为 private 可防止外部实例化,常用于单例或工具类
- private 方法不能被重写,也不能被反射直接调用(除非 setAccessible(true),但这属于绕过机制)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










