Java权限修饰符

本文详细介绍了Java中四种权限修饰符(private, default, protected, public)的使用范围及特点,并总结了在实际编程中如何合理选择不同的修饰符来定义类成员。

Java中的权限修饰符

四种权限修饰符权限修饰符作用范围

private

在同一个类中,由private修饰的属性可以被直接调用,在不同类中不可以直接调用,设置getter,setter方法时的修饰符为public。所以,在不同包不同类下的属性都可以访问到。

default(缺省修饰符)

在同一个包下的其他类都可以访问。

protected

在不同包下的子类里,都可以访问到protected修饰的属性。

public

在整个项目中都可以访问到。

总结

属性,方法,修饰符有四种:
类:修饰符用default 和 public
以后写代码:
一般属性用private修饰,方法用public修饰。

### 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]。 --- ### 结论 合理运用不同的访问修饰符可以帮助开发者更好地控制程序组件之间的交互关系,从而提升软件的设计质量与安全性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值