
作者|Rickyの水果摊
时间|2022年9月14日
Java 中的 成员变量/属性 有 4 种 访问修饰符,分别是 public、protected、default(无需添加)、private。
不同的访问修饰符为 属性 设置了不同的 访问级别(Access Level),具体情况如下表:
| 访问修饰符 | 同类 | 同包 | 子类 | 不同包 |
|---|---|---|---|---|
public | ✅ | ✅ | ✅ | ✅ |
protected | ✅ | ✅ | ✅ | ❌ |
| default | ✅ | ✅ | ❌ | ❌ |
private | ✅ | ❌ | ❌ | ❌ |
如果把上表看成一个 A 4 ∗ 4 A_{4*4} A4∗4 的类上三角矩阵,其实还是很好记忆的。但是每次都把这个表格列出来,会有一点麻烦,博主想在此分享一些记忆方式,如果各位朋友有好的记忆方式,也欢迎在评论区内分享。
首先,我们可以把这 4 个访问修饰分为两类,public 和 private 以及 protected 和 default 。
前一类其实非常好记:由 public 修饰的属性可以被任何地方使用,而由 private 修饰的属性只能被同一个类中的成员方法使用。
关键是区分后一类, protected 和 default:
从表格上来看,两者的区别是 能否被子类访问,能被不同包下子类访问的,是 protected ,不能被 不同包下子类访问的,则是 default 。
博主在网上看到一个用于记忆的例子,感觉还不错,是这样的:我们的钱(money)是受到保护的(protected),但是我们的子女可以使用我们的钱,所以 protected 修饰的属性是可以被子类访问的。
两者与 public 相比,它们均 不能 被 不同包下 的其他类访问。
两者与 private 相比,它们均 可以 被 同包下 的其他类访问。
首先,我们创建两个包,modifier.packone 与 modifier.packtwo 。在 packone 中创建 A、B 类,在 packtwo 中创建 Test 类。
1.验证 private 访问修饰符:在 A 类中设置 4 个不同修饰符的属性,在 A 类中编写一个成员方法,可以看到 4 个属性均可被访问。

然后在 modifier-packone(与 A 类同包)中,创建 B 类,编写测试代码,查看 4 个属性的访问权限。可以看到,同包的 B 类不能访问 private 修饰的 n4,另外 3 个均可访问。

2.验证 public 访问修饰符:在 modifier-packtwo-Test(与 A 类不同包)中,编写测试代码,查看 A 类中的 4 个属性。可以看到,仅有 public 修饰的 n1 允许被访问,而另外 3 个属性,不同包下的 Test 类无法访问。

3.验证 protected 和 default 访问修饰符:该内容将在学习 继承 的有关知识后补充。
学习 Java 的 第 23 天。⏰
今天主要整理了Java 中「访问修饰符」的相关内容,需要记忆和理解的东西较多,是一个小重点。
在这之后,面向对象三巨头「封装」、「继承」、「多态」将正式登场,博主也会尽力把这部分内容做好,争取用较高的质量进行总结。
今天的学习日记就到此结束了,愿与诸位朋友共勉。✊
今日摘录:
「 Sunset is drowning in the orange sea, the evening wind is falling in love」
「落日沉溺于橘色的海,晚风沦陷于赤诚的爱」
相关博客: