谈谈Java中的访问权限控制符(public, protected, default, private)

在Java中,访问权限控制符用于控制类、方法、变量等成员的访问权限。这些访问权限控制符决定了哪些代码可以访问这些成员。Java提供了四种访问权限控制符:publicprotecteddefault(也称为包级私有)和private

1. public

public 访问权限是最宽松的。如果一个类的成员被声明为 public,那么它就可以被任何其他的类访问,无论这些类是否在同一个包中。

2. protected

protected 访问权限表示成员可以被同一个包中的类访问,也可以被不同包中的子类访问。注意,这里指的是子类,而不是普通的类。

3. default(包级私有)

如果一个成员没有显式地指定访问权限控制符(即没有使用 publicprotected 或 private 关键字),那么它将被视为具有默认的访问权限,也称为包级私有。具有默认访问权限的成员只能被同一个包中的类访问。

4. private

private 访问权限是最严格的。如果一个类的成员被声明为 private,那么它只能被该类自己访问,不能被任何其他类(包括同一个包中的类)访问。

示例

// 示例类
public class AccessModifiersExample {
// public 成员变量
public int publicVar;
// protected 成员变量
protected int protectedVar;
// 默认(包级私有)成员变量
int defaultVar; // 没有显式指定访问权限控制符
// private 成员变量
private int privateVar;
// public 方法
public void publicMethod() {
// ...
}
// protected 方法
protected void protectedMethod() {
// ...
}
// 默认(包级私有)方法
void defaultMethod() { // 没有显式指定访问权限控制符
// ...
}
// private 方法
private void privateMethod() {
// ...
}
}
// 同一个包中的另一个类
class AnotherClassInSamePackage {
// 可以访问 publicVar、protectedVar 和 defaultVar
// 但不能访问 privateVar
// 可以调用 publicMethod() 和 protectedMethod(),但不能调用 privateMethod()
// 也不能调用 defaultMethod(),因为默认方法只能在同一个包中通过对象实例调用
}
// 不同包中的子类
class SubclassInDifferentPackage extends AccessModifiersExample {
// 可以访问 publicVar、protectedVar(继承而来)
// 但不能访问 defaultVar 和 privateVar
// 可以调用 publicMethod()、protectedMethod(继承而来)
// 但不能调用 privateMethod() 和 defaultMethod()
}
// 不同包中的另一个类
class ClassInDifferentPackage {
// 只能访问 publicVar(如果AccessModifiersExample的实例被传递到此类中)
// 不能访问 protectedVar、defaultVar 和 privateVar
// 也不能调用 protectedMethod()、defaultMethod() 和 privateMethod()
}

通过合理地使用这些访问权限控制符,我们可以更好地控制代码的封装性和可维护性,确保类中的成员只被合适的代码访问和修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值