Java访问权限修饰符

 Java 提供了四种访问权限修饰符,用于控制类、方法和变量的访问范围。它们是 publicprotecteddefault(无修饰符)和 private。以下是对这四种修饰符的详细解释和用法

目录

四大权限修饰符 

1. public

2. protected

3. default(无修饰符)

4. private

 总结

访问控制的设计建议


四大权限修饰符 

1. public

  • 范围:任何地方都可以访问。
  • 用法:适用于需要被广泛使用的类、方法和变量。

public class PublicClass {
    public int publicVar = 10;

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

public class TestPublic {
    public static void main(String[] args) {
        PublicClass obj = new PublicClass();
        System.out.println(obj.publicVar); // 访问 public 变量
        obj.publicMethod(); // 调用 public 方法
    }
}

2. protected

  • 范围:同一个包中的类和任何子类(即使在不同的包中)。
  • 用法:适用于希望子类能够访问但不希望外部类直接访问的成员。

public class ProtectedClass {
    protected int protectedVar = 10;

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

class SubClass extends ProtectedClass {
    public void accessProtected() {
        System.out.println(protectedVar); // 访问 protected 变量
        protectedMethod(); // 调用 protected 方法
    }
}

public class TestProtected {
    public static void main(String[] args) {
        SubClass obj = new SubClass();
        obj.accessProtected();
    }
}

3. default(无修饰符)

  • 范围:同一个包中的类可以访问,包外的类不能访问。
  • 用法:适用于希望在包内共享但不希望包外访问的成员。
class DefaultClass {
    int defaultVar = 10; // default 变量

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

public class TestDefault {
    public static void main(String[] args) {
        DefaultClass obj = new DefaultClass();
        System.out.println(obj.defaultVar); // 访问 default 变量
        obj.defaultMethod(); // 调用 default 方法
    }
}

4. private

  • 范围:只能在同一个类中访问。
  • 用法:适用于仅希望在类内部使用的成员,提供数据封装。

public class PrivateClass {
    private int privateVar = 10;

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

    public void accessPrivate() {
        System.out.println(privateVar); // 访问 private 变量
        privateMethod(); // 调用 private 方法
    }
}

public class TestPrivate {
    public static void main(String[] args) {
        PrivateClass obj = new PrivateClass();
        obj.accessPrivate();
    }
}

 总结

访问控制的设计建议

  1. 最小化访问范围:尽可能减少成员的可访问性,以遵循信息隐藏原则,提高代码的安全性和可维护性。
  2. 使用 public 谨慎:仅在需要被广泛访问的情况下使用 public,否则优先使用 protecteddefault
  3. 封装数据:使用 private 修饰符封装类的内部数据,并提供公共方法来控制对这些数据的访问。
  4. 包结构设计:合理设计包结构,以便使用 default 访问控制来共享包内成员,同时隐藏实现细节。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值