java 权限修饰符

public :同包同类,同包不同类,不同包继承,不同包不继承都可以访问

protected:同包同类,同包不同类,不同包继承可以访问,不同包不继承不可以访问

defalute:同包同类,同包不同类可以访问,不同包继承,不同包不继承都不可以访问

private:同包同类可以访问,其它都不可以访问

### Java 权限修饰符概述 Java 中有四种权限修饰符,分别为 `public`、`private`、`protected` 和默认修饰符(也称为包级私有)。每种修饰符决定了类、方法、变量以及构造器的可见性和访问范围。 #### 1. **Private 修饰符** `private` 是最严格的访问修饰符。使用此修饰符的成员只能在其所属的类内部被访问。即使是在子类中也无法直接访问这些成员。 示例代码如下: ```java class Example { private int secretNumber; public void setSecret(int number) { this.secretNumber = number; } private void showSecret() { System.out.println("The secret is: " + secretNumber); } } ``` 上述代码展示了如何通过 `setSecret()` 方法间接设置 `secretNumber` 值[^1]。 --- #### 2. **Default(默认)修饰符** 当未显式指定任何访问修饰符时,默认修饰符生效。具有默认访问级别的成员仅能被与其位于相同包内的其他类所访问。 示例代码如下: ```java // File: SamePackageClass.java package same.package.name; class DefaultAccessExample { String message = "This can only be accessed within the same package."; } // Another class in the same package can access 'message' class AccessorInSamePackage { public static void main(String[] args) { DefaultAccessExample example = new DefaultAccessExample(); System.out.println(example.message); // Valid because it's in the same package. } } ``` --- #### 3. **Protected 修饰符** `protected` 成员不仅可以被其所在的类及其子类访问,还能被同一包下的其他类访问。然而,不同包中的非子类无法访问此类成员。 示例代码如下: ```java class Parent { protected String familyName = "Smith"; } class Child extends Parent { public void displayFamilyName() { System.out.println(familyName); // Valid as Child inherits from Parent. } } // A different package and non-subclass cannot directly use 'familyName'. ``` --- #### 4. **Public 修饰符** `public` 是最为宽松的访问修饰符。标记为 `public` 的成员可以在任何地方被任意类访问。这是实现完全公开接口的主要方式之一。 示例代码如下: ```java public class PublicExample { public String greeting = "Hello, world!"; public void sayGreeting() { System.out.println(greeting); } } class AnyOtherClass { public static void main(String[] args) { PublicExample example = new PublicExample(); example.sayGreeting(); // Fully accessible due to being declared as 'public'. } } ``` --- ### 总结表:各修饰符的可见性对比 | 修饰符 | 本类 | 同一包 | 不同包的子类 | 不同包的非子类 | |-------------|------------|------------|----------------------|----------------| | `private` | ✔ | ✘ | ✘ | ✘ | | 默认(无) | ✔ | ✔ | ✘ | ✘ | | `protected` | ✔ | ✔ | ✔ | ✘ | | `public` | ✔ | ✔ | ✔ | ✔ | 上表清晰地描述了各种修饰符在不同场景下的适用情况[^4]。 --- ### 结论 合理运用不同的访问修饰符可以帮助开发者更好地控制程序组件之间的交互关系,从而提升软件的设计质量与安全性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值