Java 权限修饰符 private、默认(不写)、protected、public Java 权限修饰符 private、默认不写、protected、public核心速查对比表修饰符同一个类中同一个包中不同包的子类不同包的非子类private✅❌❌❌默认 (Default)✅✅❌❌protected✅✅✅❌public✅✅✅✅Java 中的权限修饰符Access Modifiers主要用于控制类、方法、变量或构造器在不同上下文中的可见性和访问级别。Java 提供了 4 种权限修饰符按照访问范围从小到大依次为private、默认不写、protected、public。1. 四种权限修饰符详解private私有作用范围仅在当前类内部可见。应用场景通常用于修饰类的成员变量和私有方法实现面向对象“封装”的特性。外部必须通过公共的 getter/setter 方法来访问。默认权限Default / Default / 包级私有特点在声明时不写任何修饰符。作用范围对**同一个包Package**内的所有类可见。一旦跨包即使是子类也无法访问。应用场景常用于包级别的工具类、测试类或者不希望被外部模块调用的内部实现逻辑。protected受保护作用范围对同一个包内的所有类可见并且对不同包下的子类也可见。应用场景主要用于继承体系。当父类希望某些成员只暴露给自己的子类进行重写或调用而不想完全对外公开时使用此修饰符。public公开作用范围对所有类可见没有任何限制。应用场景用于定义类的核心 API、对外提供的方法、常量等。需要注意的是一个.java文件中只能有一个public类且文件名必须与该类名一致。2. 核心速查对比表修饰符同一个类中同一个包中不同包的子类不同包的非子类private✅❌❌❌默认 (Default)✅✅❌❌protected✅✅✅❌public✅✅✅✅3. 重要补充规则与最佳实践顶层类的限制对于直接定义在.java文件中的普通类非内部类只能使用public或默认两种修饰符。如果使用private或protected修饰顶层类编译器会直接报错。接口与抽象类的特殊性在接口Interface中所有的变量默认都是public static final所有的方法默认都是public abstractJDK 8 的 default/static 方法也是 public。因此接口中显式写这些修饰符是多余的。开发最佳实践遵循**“最小权限原则”**。成员变量尽量用private不需要跨包调用的工具类用默认权限需要被子类重写的模板方法用protected只有真正需要对外暴露的 API 才用public。这能最大程度降低代码的耦合度。需要我帮你出两道关于权限修饰符的经典易错题比如 protected 在不同包下的继承陷阱来练练手吗