JAVA 访问修饰符

Java 是一种面向对象的编程语言,它提供了四种不同的访问权限,用于控制类成员(变量和方法)的可见性。这些访问权限对于封装和数据隐藏至关重要,它们分别是:public、protected、private 和默认(无修饰符)访问权限。

当前类同一个包不同包的子类不同包的非子类其他包
public
protected
default
private

1、Public 访问权限

public 是最宽松的访问权限,它允许任何其他类访问该成员。无论是同一个包内的类还是不同包内的类,都可以访问 public 成员。

示例

public class PublicClass {
    public int publicVar = 10;

    public void publicMethod() {
        System.out.println("Public Method");
    }
}

class TestPublic {
    public static void main(String[] args) {
        PublicClass pc = new PublicClass();
        System.out.println(pc.publicVar); // 可以访问
        pc.publicMethod(); // 可以访问
    }
}

2、Private 访问权限

private 是最严格的访问权限,它只允许同一个类内部访问该成员。即使是同一个包内的其他类也无法访问 private 成员。

示例

class PrivateClass {
    private int privateVar = 20;

    private void privateMethod() {
        System.out.println("Private Method");
    }

    public void accessPrivate() {
        System.out.println(privateVar); // 允许访问
        privateMethod(); // 允许调用
    }
}

class TestPrivate {
    public static void main(String[] args) {
        PrivateClass pc = new PrivateClass();
        // System.out.println(pc.privateVar); // 编译错误,无法访问
        // pc.privateMethod(); // 编译错误,无法调用

        pc.accessPrivate(); // 正确,通过公共方法访问
    }
}

3、Protected 访问权限

protected 访问权限介于 publicprivate 之间。它可以被同一个包内的类以及不同包中的子类访问。

示例

class ProtectedClass {
    protected int protectedVar = 30;

    protected void protectedMethod() {
        System.out.println("Protected Method");
    }
}

class SubClass extends ProtectedClass {
    public void accessProtected() {
        System.out.println(protectedVar); // 允许访问
        protectedMethod(); // 允许调用
    }
}

class TestProtected {
    public static void main(String[] args) {
        ProtectedClass pc = new ProtectedClass();
        // System.out.println(pc.protectedVar); // 编译错误,包外无法访问
        // pc.protectedMethod(); // 编译错误,包外无法调用

        SubClass sc = new SubClass();
        sc.accessProtected(); // 正确,子类可以访问
    }
}

4、默认(无修饰符)访问权限

如果没有指定任何访问权限修饰符,那么成员的访问权限就是默认的,它只能被同一个包内的其他类访问。

示例

class DefaultAccess {
    int defaultVar = 40;

    void defaultMethod() {
        System.out.println("Default Method");
    }
}

class TestDefault {
    public static void main(String[] args) {
        DefaultAccess da = new DefaultAccess();
        System.out.println(da.defaultVar); // 包内可以访问
        da.defaultMethod(); // 包内可以调用
    }
}

// 如果尝试在不同包中访问 DefaultAccess 类的成员,将会导致编译错误。

结论

Java 的四种访问权限提供了灵活的方式来控制类成员的可见性。
public 允许最广泛的访问;
private则提供了最严格的封装;
protected 允许子类访问;
默认访问权限default则限制了访问范围在同一包内。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值