在 Java 中,访问修饰符(Access Modifiers)用于设置类、变量、方法和构造方法的访问级别。它们控制着类的成员(字段、方法等)的可见性和访问权限。主要的访问修饰符包括 public
、private
和 protected
。此外,还有一个默认的访问级别,称为包级访问或无修饰符访问。
那么不同的访问修饰符有什么不同呢?下文,我将会从不同访问修饰符的可见性和使用场景向你一一道来
1.public
可见性:对所有类都可见,无论是否在同一包内
使用场景:希望完全公开的类成员
例:
public class test {
public int number;
public void display() {
System.out.println(number);
}
}
2.private
可见性:仅对同一个类可见,不能被其他类访问,即使他们在同一个包
使用场景:用于希望完全隐藏的类成员,通常用于实现类的封装。
public class Test {
private int number;
private void display() {
System.out.println(number);
}
}
3.protected
可见性:对同一个类和任意子类可见,无论其是否在同一个包内。
使用场景:用于希望完全隐藏的类成员,通常用于实现类的封装。
例:
public class Test {
protected int number;
protected void display() {
System.out.println(number);
}
}
4.默认(无修饰符)
可见性:仅对同一个包内的类可见,其他包中的类无法访问。
使用场景:只希望在当前包内公开的类
例:
class test {
int number;
void display() {
System.out.println(number);
}
}
我将不同访问修饰符的范围整理成了一个表格:
修饰符 | 同一个类 | 同一个包 | 子类(同一个包) | 子类(不同的包) | 其他包 |
---|---|---|---|---|---|
public | 是 | 是 | 是 | 是 | 是 |
private | 是 | 否 | 否 | 否 | 否 |
protected | 是 | 是 | 是 | 是 | 否 |
默认(无修饰符) | 是 | 是 | 是 | 否 | 否 |