在Java中,权限修饰符(Access Modifiers)用于控制类、方法、变量和构造函数的访问级别。Java提供了四种权限修饰符:
下面详细介绍每个权限修饰符及其适用范围:
-
public
:公共访问修饰符。被public
修饰的类、方法、变量可以被任何其他类访问。它具有最宽松的访问级别,适用于需要在整个程序中都能访问的成员。- 类:可以从任何地方访问
public
类。 - 方法:可以从任何地方调用
public
方法。 - 变量:可以从任何地方访问
public
变量。
- 类:可以从任何地方访问
-
protected
:受保护访问修饰符。被protected
修饰的成员可以在同一包内的其他类以及继承该类的子类中访问。它比public
访问级别更受限制,适用于需要在特定包或继承关系中访问的成员。- 类:通常不使用
protected
修饰类。 - 方法:可以在同一包内的其他类中直接调用
protected
方法,也可以在继承该类的其他包中的子类中调用。 - 变量:可以在同一包内的其他类中直接访问
protected
变量,也可以在继承该类的其他包中的子类中访问。
- 类:通常不使用
-
默认(无修饰符):默认访问修饰符是指不显式地指定任何修饰符。它在同一包内可见,但对于不在同一包内的类是不可见的。默认访问级别适用于只希望在同一包内访问的成员。
- 类:可以在同一包内的其他类中访问默认类。
- 方法:可以在同一包内的其他类中直接调用默认方法。
- 变量:可以在同一包内的其他类中直接访问默认变量。
-
private
:私有访问修饰符。被private
修饰的成员只能在声明它的类内部访问。它提供了最高级别的封装性,适用于只需要在当前类内使用的成员。- 类:通常不使用
private
修饰类。 - 方法:只能在声明该方法的类内部直接调用
private
方法。 - 变量:只能在声明该变量的类内部直接访问
private
变量。
- 类:通常不使用
下面是各个权限修饰符适用的范围:
类内部 | 同一包内 | 子类 | 其他包 | |
---|---|---|---|---|
public | ✔ | ✔ | ✔ | ✔ |
protected | ✔ | ✔ | ✔ | ✖ |
默认(无修饰符) | ✔ | ✔ | ✖ | ✖ |
private | ✔ | ✖ | ✖ | ✖ |