再学Java基础——访问权限控制符

在Java中,有四种访问权限控制符:privatedefault(也称为包级私有)、protected 和 public。这些访问权限控制符决定了类、接口、成员变量和成员方法的访问级别。以下是这些访问权限控制符及其区别的详细说明:

  1. private
    • private 是最严格的访问级别。一个被声明为 private 的成员只能在定义它的类中被访问。
    • 它提供了对成员的完全封装,外界不能访问也不能修改它(除了通过类中提供的方法)。
    • 类的私有成员变量和方法通常用于存储和操作类的内部状态。
  2. default(包级私有)
    • 如果没有指定任何访问修饰符,那么成员变量或方法将被隐式地声明为 default 访问级别。
    • default 访问级别意味着成员变量或方法可以被定义它的类所在的包中的任何其他类访问。
    • 在包外,这些成员是不可见的。
  3. protected
    • protected 成员可以被定义它的类以及同包中的其他类访问。
    • 此外,它还可以被不同包中的子类访问(即使子类位于不同的包中)。
    • 它提供了一种机制,使得子类可以访问并修改父类的某些状态,同时保持这些状态对包外的其他类不可见。
  4. public
    • public 是最宽松的访问级别。成员变量或方法可以被任何其他类访问,无论它们是否在同一包中。
    • public 成员通常用于表示类的API,即类希望被其他类使用的部分。

以下是使用案例:

private 使用案例

public class Person {  
    private String name; // 私有字段,只能在Person类内部访问  
  
    public Person(String name) {  
        this.name = name;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    // 没有提供setName方法,因为name字段是私有的  
}

default(包级私有)使用案例

// 假设这个类在com.example.package包中  
class PackagePrivateClass {  
    String packagePrivateField; // 包级私有字段,只能在同包的其他类中访问  
  
    void packagePrivateMethod() {  
        // ...  
    }  
}

protected 使用案例

public class Animal {  
    protected String species; // 受保护的字段,可以在Animal类、同包的其他类以及子类中访问  
  
    protected void makeSound() {  
        // ...  
    }  
}  
  
// 假设这个类在另一个包中,但它是Animal的子类  
public class Dog extends Animal {  
    public void bark() {  
        System.out.println("Barking...");  
        makeSound(); // 可以访问父类的protected方法  
    }  
}

public 使用案例

public class PublicClass {  
    public static final int CONSTANT = 10; // 公共常量  
  
    public String publicField; // 公共字段  
  
    public void publicMethod() {  
        // ...  
    }  
}  
  
// 其他类可以访问PublicClass及其公共成员  
public class OtherClass {  
    public static void main(String[] args) {  
        System.out.println(PublicClass.CONSTANT); // 可以访问PublicClass的公共常量  
        PublicClass pc = new PublicClass();  
        System.out.println(pc.publicField); // 可以访问PublicClass的公共字段  
        pc.publicMethod(); // 可以调用PublicClass的公共方法  
    }  
}

区别总结

  • private 成员只能在定义它们的类中被访问。
  • default(或没有修饰符)成员可以在定义它们的类和同包的其他类中被访问。
  • protected 成员可以在定义它们的类、同包的其他类以及不同包中的子类中被访问。
  • public 成员可以在任何地方被访问。

了解这些访问权限控制符并正确使用它们,是编写健壮、可维护的Java代码的关键。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿部春光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值