• 【Java】学习日记 Day23


    image-20220702163210840

    作者|Rickyの水果摊

    时间|2022年9月14日


    💡 今日知识点总结

    访问修饰符(Access Modifier)

    1.1 访问修饰符的基础概念

    Java 中的 成员变量/属性 有 4 种 访问修饰符,分别是 publicprotecteddefault(无需添加)private

    不同的访问修饰符为 属性 设置了不同的 访问级别(Access Level),具体情况如下表:

    访问修饰符同类同包子类不同包
    public
    protected
    default
    private

    如果把上表看成一个 A 4 ∗ 4 A_{4*4} A44 的类上三角矩阵,其实还是很好记忆的。但是每次都把这个表格列出来,会有一点麻烦,博主想在此分享一些记忆方式,如果各位朋友有好的记忆方式,也欢迎在评论区内分享。

    首先,我们可以把这 4 个访问修饰分为两类,publicprivate 以及 protecteddefault

    前一类其实非常好记:由 public 修饰的属性可以被任何地方使用,而由 private 修饰的属性只能被同一个类中的成员方法使用。

    关键是区分后一类, protecteddefault

    1. 从表格上来看,两者的区别是 能否被子类访问,能被不同包下子类访问的,是 protected ,不能被 不同包下子类访问的,则是 default

      博主在网上看到一个用于记忆的例子,感觉还不错,是这样的:我们的钱(money)是受到保护的(protected),但是我们的子女可以使用我们的钱,所以 protected 修饰的属性是可以被子类访问的。

    2. 两者与 public 相比,它们均 不能不同包下 的其他类访问。

    3. 两者与 private 相比,它们均 可以同包下 的其他类访问。

    1.2 访问修饰符编程实例

    首先,我们创建两个包,modifier.packonemodifier.packtwo 。在 packone 中创建 A、B 类,在 packtwo 中创建 Test 类。

    1.验证 private 访问修饰符:在 A 类中设置 4 个不同修饰符的属性,在 A 类中编写一个成员方法,可以看到 4 个属性均可被访问。

    image-20220914172240337

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

    image-20220914172921318

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

    image-20220914171832875

    3.验证 protecteddefault 访问修饰符:该内容将在学习 继承 的有关知识后补充。


    ✏️ 今日随记

    学习 Java 的 第 23 天。⏰

    今天主要整理了Java 中「访问修饰符」的相关内容,需要记忆和理解的东西较多,是一个小重点。

    在这之后,面向对象三巨头「封装」、「继承」、「多态」将正式登场,博主也会尽力把这部分内容做好,争取用较高的质量进行总结。

    今天的学习日记就到此结束了,愿与诸位朋友共勉。✊

    今日摘录:

    Sunset is drowning in the orange sea, the evening wind is falling in love

    落日沉溺于橘色的海,晚风沦陷于赤诚的爱


    相关博客

    【Java】学习日记 Day22

    【Java】学习日记 Day21

    【Java】学习日记 Day20

  • 相关阅读:
    二十三种设计模式全面解析-装饰器模式-超越继承的灵活装扮
    TIA博途V17中ProDiag功能的使用方法示例(三)文本列表
    激光雕刻机的雕刻操作
    人工智能知识全面讲解:生活中的决策树
    kafka的安装
    “因此在此系统上禁止运行脚本” 解决方案
    电动汽车安全概述
    C#实战:Dapper操作PostgreSQL笔记
    jvisualvm的使用
    【并发编程】线程间的通信
  • 原文地址:https://blog.csdn.net/qq_46025844/article/details/126857182