Java访问修饰符
在Java中,访问修饰符用于控制类、变量、方法和构造器的可见性。在Java中,一共有四种访问修饰符,分别是public、protected、default(什么都不写)、private;
修饰符使用范围总结:
| 修饰符 | 类(外部) | 类(内部) | 变量 | 方法 | 构造器 |
|---|---|---|---|---|---|
public |
✅ | ✅ | ✅ | ✅ | ✅ |
protected |
❌ | ✅ | ✅ | ✅ | ✅ |
default(默认) |
✅ | ✅ | ✅ | ✅ | ✅ |
private |
❌ | ✅ | ✅ | ✅ | ✅ |
public
- 作用:
被修饰的成员或类对所有其他类可见,无论是否在同一个包。 - 可修饰范围:
- 类(外部类只能是
public或默认包级私有,但内部类可以是public)。 - 变量、方法、构造器:均可使用。
- 类(外部类只能是
- 示例:
public class MyClass { // 外部类只能是 public 或默认
public int value; // 任何类均可访问
public void method() { ... }
}
protected
- 作用:
- 同包内的类可以直接访问。
- 不同包的子类可以通过继承访问(通过子类实例或子类自身,但不能直接通过父类实例访问)。
- 可修饰范围:
- 变量、方法、构造器:均可使用。
- 内部类:可以修饰,但外部类不能用
protected。
- 示例:
public class Parent {
protected void method() { ... } // 同包类或子类可访问
}
default
(包级私有,不写修饰符)
- 作用:
仅在同一个包内可见,跨包不可访问(即使有继承关系)。 - 可修饰范围:
- 类(外部类只能是
public或默认)。 - 变量、方法、构造器:均可使用。
- 类(外部类只能是
- 示例:
class PackagePrivateClass { // 默认修饰符,同包可见
int value; // 同包可见
void method() { ... }
}
private
- 作用:
仅在本类内部可见,其他类(包括同包或子类)均不可访问。 - 可修饰范围:
- 变量、方法、构造器:均可使用。
- 内部类:可以修饰,但外部类不能用
private。
- 示例:
public class MyClass {
private int secret; // 仅 MyClass 内部可访问
private void method() { ... }
private static class Inner { ... } // 内部类私有
}
总结
- 外部类只能用
public或默认修饰符。 - 内部类可以使用所有四种修饰符。
- 跨包访问
protected成员:- 子类需通过继承关系访问(如
super.method()或子类实例调用)。 - 不能直接通过父类实例访问(如
new Parent().method()在跨包时非法)。
- 子类需通过继承关系访问(如
- 变量、方法、构造器可以使用所有四种修饰符。

浙公网安备 33010602011771号