java通过public、protected、默认和private四种修饰符控制成员可见性:private仅本类可访问;默认同包可见;protected本类、同包及不同包子类可见;public全局可见。

Java 中通过 public、protected、默认(包级私有) 和 private 四种访问修饰符控制类成员(字段、方法、构造器、嵌套类)的可见范围,核心是限制“谁能在哪访问它”。
private:仅限本类内部访问
最严格的修饰符,只能被定义它的那个类直接使用,连子类和同包类都不能访问。
- 常用于封装敏感字段,比如把 age 声明为 private,再提供 public 的 getAge() 和 setAge() 方法做校验
- 构造器设为 private 可防止外部 new 实例,配合静态工厂方法实现单例或对象池
默认(不写修饰符):同一包内可见
没有写任何修饰符时,成员对**同一个包下的所有类**可见,但对外部包(包括子类,哪怕继承了该类)不可见。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 适合模块内部协作的工具方法或中间状态字段,不希望被其他包随意调用
- 注意:不同包的子类无法访问父类的默认成员,这点和 protected 不同
protected:本类 + 同包 + 不同包子类
比默认更宽,允许三种情况访问:自己类中、同包其他类、不同包的子类(通过继承关系)。
- 典型用途是给子类留出扩展点,比如父类定义 protected void init(),子类可重写它
- 子类不能通过父类实例访问其 protected 成员(如 parentObj.protectedMethod() 会报错),只能通过 this 或 super 调用
public:完全开放,无访问限制
任何地方都能访问,只要能拿到对象引用或类名(静态成员)。
- 类本身只能用 public 或默认修饰;接口、枚举、注解的成员默认就是 public
- 不要滥用 public 字段,优先用 private + public getter/setter,便于后续加逻辑或改实现
- public 方法是类对外提供的契约,修改签名需谨慎,可能影响所有调用方
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










