📅  最后修改于: 2023-12-03 15:16:01.865000             🧑  作者: Mango
在 Java 中,通过访问修饰符(access modifiers)来控制类、变量、方法等成员的访问级别。Java 中有四种访问修饰符,它们分别是:public、protected、default 和 private。
public 修饰的成员可以被任何类、任何包中的类以及其他 Java 程序访问。public 成员在程序中具有最高的可见性。
public class MyClass {
public int publicMember;
public void publicMethod() {
// ...
}
}
protected 修饰的成员可以被当前类、当前类的子类以及当前类所在包中的其他类访问。protected 成员在程序中的可见性仅次于 public 成员。
public class MyClass {
protected int protectedMember;
protected void protectedMethod() {
// ...
}
}
当成员没有使用 public、protected 或 private 任何一个修饰符时,成员就是默认访问修饰符修饰的。default 修饰的成员能够被当前类和当前类所在包中的其他类访问。
public class MyClass {
int defaultMember;
void defaultMethod() {
// ...
}
}
private 修饰的成员只能够被当前类中的其他成员访问,无法被其他类访问。private 成员在程序中的可见性最低。
public class MyClass {
private int privateMember;
private void privateMethod() {
// ...
}
}
需要注意的是,虽然访问修饰符可以控制成员的访问级别,但是它并不能控制方法的覆盖。当一个方法被子类重写时,子类覆盖的方法的可见性不能小于父类的可见性。也就是说,如果父类方法使用的是 protected 访问修饰符修饰,那么子类覆盖时至少使用 protected 修饰符。如果使用的是 default 访问修饰符修饰则子类覆盖时必须使用 default 或更加高级的访问修饰符修饰。