码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java-访问修饰符


    目录

    一、private(私有权限)

    二、default(默认权限)

    三、protected(受保护权限)

    ​四、public(公共权限)

    五、总结

    示意图 

    private(default)protectedpublic
    本类YesYesYesYes
    同包的类NoYesYesYes
    不同包的父子关系NoNoYesYes
    不同包的非父子关系NoNoNoYes

    注意点:外部类只能由public或不写修饰符(default)修饰。

    一、private(私有权限)

    1、可以修饰成员属性,构造方法(若是修饰了构造函数,且构造函数只有一个,则该类不能在外部类创建对象,或者被其他类继承(因为继承时,会先调用父类的构造函数),其他修饰符按照各自修饰范围限制),成员方法,内部类,不能修饰外部类。

    2、被private修饰的成员,只能在定义它们的类中使用(也就是定义类的{},大括号里面),在其他类中不能访问。

    二、default(默认权限)

    默认不写修饰符,就是默认权限,不能主动写default关键字,否则编译器会报错。

    1、类,成员属性,构造方法,成员方法都能使用默认权限,只需不写任何修饰符关键字即可。

    2、默认权限即同包权限,同包权限只能由本类以及同包的类访问。

    三、protected(受保护权限)

    1、可以修饰成员属性,构造方法,成员方法,内部类。

    2、被protected修饰的成员,能在定义它们的类或同包的类被访问。

    3、如果有不同包的类想访问调用它们,那么这个类必须是定义它们的类的子类。(在该类的{}中,通过this或者创建该类的对象访问它们,不能通过创建定义类对象访问)。

    如下图,Test类的msg成员属性被protected修饰符修饰,

    不同包下的Red想要访问msg属性,则只能通过继承Test类,然后通过this.msg访问,或创建Red对象red,通过red.msg访问。

    在Red类中,创建Test对象test,不能通过test访问msg。

    四、public(公共权限)

    1、可以修饰类,成员属性,构造方法,成员方法。

    2、被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。

    五、总结

    判断是否可访问成员的逻辑:

    类A若想通过对象(类B或类B的子类)访问类B的成员,先判断对象是否拥有该成员(例如对象类型是类B的子类,子类是否能正常继承类B的成员),若是对象拥有该成员,则根据成员的修饰符、类A与类B(定义成员的类)的关系(是否在同一个包、是否是父子关系等)判断是否可访问该成员。

    例如类A中,通过创建类C(继承了类B)对象c访问类B的成员msg,因为类B的msg属性修饰符为protected,所以类C能继承类B的msg属性,且类A和类B在同一个包中,符合protected的要求,所以在类A中,能通过c访问msg属性。

    假设将类A移到类C包中,没与类B在同一个包中,且类A没继承类B,则不符合protected的要求,所以无法通过c对象访问msg属性。

    如想访问到类B的msg属性,只能与类B同一个包,或者继承类B,在类A中通过this.msg或者创建类A的对象访问msg属性。

    参考

    Java访问修饰符全面详细介绍_努力努力再努力c.的博客-CSDN博客_java访问修饰符

  • 相关阅读:
    Arduino开发实例-多机CAN-Bus通信(基于MCP2515)
    【CCF】第30次csp认证——202305-1重复局面
    flink技术总结待续
    【已解决】设置SSH主机:VS Code-正在本地下载 VS Code 服务器
    Python unittest 之二: 测试类的执行
    Xcode如何利用预览(Preview)让SwiftUI视图快速适配不同尺寸的设备
    CentOS 8 正式停服;复旦教授痛批 Google 修复高危漏洞一直延期;WebStorm 2021.3.1 发布 | 开源日报
    Java开发与配置用到的各类中间件官网
    在Boss直聘上投简历时,怎样保证有新消息时能及时收到
    金九银十进大厂必刷的Java面试题 (全彩版)
  • 原文地址:https://blog.csdn.net/weixin_37607613/article/details/126543397
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号