Skip to content

访问权限修饰符

Java 的访问权限控制(Access Modifiers)是面向对象编程中非常重要的一部分,用来控制类、变量、方法以及构造函数的可见性,从而实现封装。Java 提供了 4 种主要的访问权限修饰符:

修饰符同类同包子类所有类
private
default
protected
public

private

私有

作用:只能在 同一个类内部访问。

典型用途:类的内部属性、辅助方法,防止外部直接修改。

示例

java
class Person {
    private String name;

    private void secret() {
        System.out.println("This is private");
    }

    public void showSecret() {
        secret(); // 类内部可以访问 private
    }
}

public class Test {
    public static void main(String[] args) {
        Person p = new Person();
        // p.name = "Tom"; // ❌ 编译错误
        p.showSecret();   // ✅ 可以通过 public 方法访问
    }
}

default

包级别,未显式指定修饰符

作用:在同一个 包(package) 内可以访问,包外不可访问。

典型用途:包内部共享的类、方法或属性。

示例

java
package mypackage;

class MyClass {       // default 修饰符
    void display() {  // default 修饰符
        System.out.println("Hello from default");
    }
}

protected

受保护:父类想让子类继承使用,但不希望完全公开给所有类。换句话说:只给子类中使用

作用

  1. 同一个包内可以访问
  2. 不同包的子类可以访问

示例

java
package parent;

public class Parent {
    protected String message = "Hello";

    protected void greet() {
        System.out.println(message);
    }
}
java
package child;

import parent.Parent;

public class Child extends Parent {
    public void show() {
        System.out.println(message); // ✅ protected 子类可以访问
        greet();                      // ✅ protected 子类可以访问
    }
}

public

  • 作用:任何地方都可以访问。
  • 典型用途:类库接口、主入口类、公共 API。
  • 示例
java
public class Hello {
    public void sayHi() {
        System.out.println("Hi!");
    }
}