访问修饰符定义了类、属性和方法的访问权限,Java 中包含四种,访问权限从小到大为 private、default、protected 和 public。
- public,公共修饰符,被其修饰的类、属性或方法在项目中任意类中访问。
- protected,保护修饰符,被其修饰的类、属性或方法在当前类所属包或当前类的子类中可访问。
- default,默认修饰符,没有明确声明修饰符时默认采用此修饰符,被其修饰的类、属性或方法只能被当前类所属包中的类访问。
- private,私有修饰符,被其修饰的类、属性或方法仅在当前类中可访问。
修饰符 | 本类中 | 同一个包下 | 不同包子类 | 不同包非子类 |
---|---|---|---|---|
private | √ | × | × | × |
default | √ | √ | × | × |
protected | √ | √ | √(部分) | × |
public | √ | √ | √ | √ |
以下是访问修饰符相关知识中需要特别注意的内容:
- default 修饰的类、属性或方法如果是在不同包下,即使是子类也无法访问。
- protected 修饰的类、属性或方法可以在不同包子类中访问,但是无法通过该子类的实例进行访问。例如 A 是 B 的父类,两者分属不同包下,A 中的方法 a() 使用 protected 进行修饰,此时我们可以在 B 的方法 b() 中调用 super.a(),但是无法通过实例化进行调用, new B().a() 则无法调用。