Java访问修饰符

在Java中,访问修饰符用于控制类、变量、方法和构造器的可见性。在Java中,一共有四种访问修饰符,分别是publicprotecteddefault(什么都不写)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 { ... }  // 内部类私有
}

总结

  1. 外部类只能用 public 或默认修饰符。
  2. 内部类可以使用所有四种修饰符。
  3. 跨包访问 protected 成员
    • 子类需通过继承关系访问(如 super.method() 或子类实例调用)。
    • 不能直接通过父类实例访问(如 new Parent().method() 在跨包时非法)。
  4. 变量、方法、构造器可以使用所有四种修饰符。
posted @ 2025-06-04 21:31  joudys  阅读(122)  评论(0)    收藏  举报