Java中有四种访问修饰符(Access Modifiers),它们定义了类、方法、变量和构造函数的访问控制级别。这些修饰符从最宽松的访问级别到最严格的访问级别依次为:public, protected, default(没有修饰符时使用的默认访问级别)和 private。
public
public修饰符是访问权限最宽松的,它表示被修饰的类、成员变量、方法等可以被任何其他类访问。- 如果类是公共的(public),那么它可以被任意外部类访问。
 
示例:
public class PublicClass {public int publicVar = 5;
}
 
protected
protected修饰符表示变量、方法等可以被同一包内的任何其他类以及不同包中的子类访问。protected提供了包内访问与通过继承访问的结合。
示例:
class SamePackageClass {protected int protectedVar = 10;
}
 
default
- 当没有指定访问修饰符时,默认使用
default级别,也称为包级别访问(Package-Private)。这意味着只有同一个包内的类可以访问这些成员。 - 默认访问修饰符不使用任何关键字,这是缺省的访问级别。
 
示例:
class DefaultAccessClass {int defaultVar = 15;
}
 
private
private修饰符是访问权限最严格的,表示被修饰的变量、方法等只能在其定义的类内部被访问。private通常用于隐藏类的实现细节和保护类的数据。
示例:
public class PrivateMembersClass {private int privateVar = 20;
}
 
总结
| 修饰符 | 本类 | 同包 | 子类 | 全局 | 
|---|---|---|---|---|
| public | 是 | 是 | 是 | 是 | 
| protected | 是 | 是 | 是 | 否 | 
| default | 是 | 是 | 否 | 否 | 
| private | 是 | 否 | 否 | 否 | 
最佳实践
使用访问修饰符时,最佳实践是遵循最小权限原则:除非有充足的理由,否则应尽可能将访问权限设置得尽可能严格。这种做法增强了代码的封装性,减少了对象之间的依赖性,并提升了代码的可维护性和安全性。