Java中的访问权限修饰符

本文深入解析Java中的访问权限修饰符:public、private和protected,包括它们的作用、适用场景以及如何获取访问权限。重点强调private权限的重要性,特别是在多线程环境下的作用。同时介绍了访问权限的取得途径,如直接声明为public、在同一包内默认访问、通过继承或提供get/set方法。

Java中只有三个访问权限修饰符public,protected和private。

1、如果不写任何修饰符,默认的是“包访问权限”。相当于对包内的所有其他类和方法是public,而对于包外的类和方法都是private的。由于一个编译单元(一个Java文件)之恩给你隶属于一个包,所以经由包访问权限,处于同一编译单元中的所有类彼此之间都是自动可访问的。(这就是一个包存在的原因)

2、继承来的类既可以访问public成员也可以访问protected成员。

3、取得访问权限的途径:

1.使该成员的访问权限为public。

2.通过不加访问权限修饰词,并将其他类放置在同一个包内的方式基于其他成员包访问权。

3.继承某一个类

4.提供get()、set()方法。

一、public

对所有成员可用,尤其是使用类库的客户程序员,

二、private

除了该被private修饰的成员所在的类之外,其他任何类都无法访问这个成员。
默认访问权限是一种常用的权限。同时也是在外几天假任何权限控制是能够自动得到的权限,因此,你可能不会认为自己会经常需要使用关键字private,因为没有他照样工作,然而,private权限非常重要,尤其是在多线程环境下。

三、protected

protected处理的是继承的概念。
如果创建了一个新包,并且从另一个包中继承类,那么唯一可以访问的成员就是源包中的public成员。
protected也提供了包访问权限,也就是说同一包内的其他非继承自他的类可以访问protected修饰的方法或属性。

四、很重要的一点

1、对于类的访问权限,仅有两个选择,包访问权限和public。既不可以是private的也不可以是protected 的。(内部类可以有private和protected)
### Java 访问权限修饰符概述 Java 中的访问权限修饰符用于控制类、方法、字段以及构造函数的可见性和可访问范围。这些修饰符定义了哪些部分可以被外部代码访问,从而增强了程序的安全性和封装性。 #### 1. **`public`** `public` 是最开放的访问级别,表示该成员可以在任何地方被访问。无论是同一个包内的类还是不同包中的子类或其他类都可以自由调用 `public` 成员[^1]。 ```java public class Example { public String message; // 可以被任意位置访问 } ``` #### 2. **`private`** `private` 是最严格的访问级别,表明该成员仅限于其所在的类内部访问。即使是在同一包下的其他类也无法访问 `private` 的成员[^3]。 ```java class Example { private int secretNumber; void setSecret(int value) { this.secretNumber = value; } int getSecret() { return this.secretNumber; } } ``` #### 3. **`protected`** `protected` 表示该成员不仅能在本类中访问,在同一包下也可以被访问;此外,它还可以被不同包中的子类所继承并访问[^4]。 ```java class ParentClass { protected String familyName = "Smith"; } class ChildClass extends ParentClass { void displayFamilyName() { System.out.println(familyName); // 子类可以直接访问父类的protected成员 } } ``` #### 4. **默认访问权限 (`default`)** 当不显式地指定任何访问修饰符时,默认情况下会采用这种访问级别。具有默认访问级别的成员只能在同一包内被访问,而无法跨包访问[^2]。 ```java // 假设此文件位于 com.example 包中 class DefaultAccessExample { String name = "Default Access"; // 默认访问权限 } package another.package.name; import com.example.DefaultAccessExample; public class AnotherPackageTest { public static void main(String[] args) { DefaultAccessExample example = new DefaultAccessExample(); // 下面这行会产生编译错误,因为name是默认访问权限 // System.out.println(example.name); } } ``` ### 总结对比表 | 访问修饰符 | 同一包内相同类 | 同一包内其它类 | 不同包内子类 | 不同包内其它类 | |------------|------------------|-------------------|-----------------|--------------------| | public | √ | √ | √ | √ | | protected | √ | √ | √ | × | | default | √ | √ | × | × | | private | √ | × | × | × | ### 结论 通过合理运用上述四种不同的访问权限修饰符,开发者能够有效地管理数据隐藏与共享的程度,进而构建更加安全可靠的应用程序结构。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值