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 | 是 | 否 | 否 | 否 |
最佳实践
使用访问修饰符时,最佳实践是遵循最小权限原则:除非有充足的理由,否则应尽可能将访问权限设置得尽可能严格。这种做法增强了代码的封装性,减少了对象之间的依赖性,并提升了代码的可维护性和安全性。