巧记Java访问控制描述符(Access Control Modifier)public, private, protected

LangChain4j与MCP集成开发实战指南 大语言模型(LLM)集成是当前AI应用开发的核心需求,Java开发者常面临模型服务管理的挑战。模型控制协议(MCP)作为标准化接口方案,通过服务发现、负载均衡等机制解决多模型协同问题。LangChain4j作为Java生态的LLM开发框架,与MCP协议深度集成后,能显著提升企业级AI应用的开发效率。本文以实际工程案例展示如何通过MCP实现模型路由、结构化输出校验等关键功能,特别适用于需要同时管理多个模型版本的生产环境。技术方案涵盖连接池优化、缓存策略等性能调优手段,并提供了金融、医疗等领域的扩展实践。 阅读详情
 在我们开始这个话题之前,不妨请大家看一道大公司经常考察的笔试题,顺便也测试一下你自己对Java访问控制的理解是否到位。

看完代码之后,你是否有这样一种想法:“我平时怎么没有写过这样的代码,这段代码看起来很怪,是不是存在错误”,如果你真的存在类似这样的想法,那么我可以明确地告诉你:你对Java访问控制描述符的理解还不够深刻。不过这没有关系,因为你看完这篇文章之后,你就可以和这种状况说再见了。现在就让我们开始愉快的学习之旅吧。

 

访问级别描述符定义了其他类能否使用某个特定的成员变量或调用某个特定的成员方法。Java中有两种级别的访问控制描述符:

  • 类级别 :即用来修饰类的访问控制描述符。该级别有public(公有)和package-private(包私有,没有显式使用描述符)
  • 成员级别 :即用来修饰成员的访问控制描述符。该级别有public(公有)、private(私有)、protected(受保护)和package-private(包私有,没有显式使用描述符)

类级别描述符

如果使用public 描述符声明一个类,那么所有的类都可以使用这个类,包括与该类同一个包和不同包的。如果一个类前面没有访问控制描述符,那么这个类就是package-private 的,其实这个词非常好理解,就是说只有和这个类在同一个包的其他类才能使用该类,其他包的类都不能使用该类。

(作者 注:所谓的使用包括继承、作为成员、作为变量等等,在这告诉大家一个比较好的记忆方法:只要在类前面的improt中引用了该类,都可以认为是使用了该类 )

成员级别描述符

和类级别一样,在成员级别你也可以使用public 和package-private ,他们的意义与在类级别中是相同的,即声明为public 的成员(成员是成员变量和成员方法的合称),可以在任何地方使用,声明为package-private 的成员则只能在包内被使用。对于成员,还有另外两个访问描述符来控制其访问:private 和protected ,private 表示该成员只能在该类的内部 使用(翻译成英文即是The private modifier specifies that the member can only be accessed in it's own class );protected 表示该成员只能在该类所在的包内部使用,同时还能够被其他包中的子类访问(本包的类别说是子类,非子类都可以访问)(翻译成英文即是The protected modifier specifies that the memeber can only be accessed in it's own package and in addition by a subclass of its class in other package)。

 

看完这个之后,大家可能还会觉得巧记在何处?那么让我来慢慢解释:

对于public 描述符,你只需要记住一条,你在哪 都可以访问。

private 描述符表示该成员只能在该类的内部 使用,我们需要重点理解的是“在该类的内部 ”,意思是只要是在定义该成员的类的内部(类的内部是一个空间范围 名词,只要是在{}之间的代码都算作是在类的内部),爱怎么用就怎么用,不妨回到上述代码的类Demo1,在方法add中,使用了Demo1类型的参数added,并且通过added.priStr这种方式直接引用该成员变量,可能大家对这条语句是最有意见的,那么我们现在通过这种方式判断:因为我是在定义priStr的类的内部(即Demo1)中使用它,所以是合法的,同理在main方法中也是在Demo1类的内部,因此也可以直接访问priStr成员和add方法。

至于protected 描述符和package-private ,则只要是在该类所在包内部 ,也可以随便使用。我以代码示之(我编写的代码是一个完整的类,包含了package,import声明,在学习访问控制时,package声明一定要注意)。

 

从上面可以看出,Demo2和Demo1在同一个包内,所以在类Demo2内部,除了Demo1的私有成员不能访问之外,其他成员均可以直接访问。

比package-private 作用范围更强一点,protected 描述符修饰的字段还能够被其他包中它的子类所访问,一定要注意在“类的内部被访问”和“被类使用”的区别,被其他包中它的子类使用,表明该成员只能被子类使用,而不是在该子类中使用,看一段代码就明白了。

从上图可以看出,Demo3是Demo1在其他包中的子类,所以此时只能是Demo3使用该成员,即从父类继承下来的成员,但是Demo1类型的对象已经不能直接访问其protected成员了。

 

综上所述:只要你理解了“在……内部” 和“被……访问” 的区别,那么你就已经理解Java访问描述符。

【开源~磁悬浮】零代码,纯硬件闭环:从霍尔到H桥的磁悬浮稳定术 本文详细介绍了如何不依赖任何代码,仅通过模拟和数字电路的组合,实现一个完整的磁悬浮闭环控制系统。从霍尔传感器检测位置,到运放电路进行信号调理与模拟PID控制,再到H桥驱动电磁铁执行纠偏,全程使用基础电子元器件搭建。文章深入剖析了系统原理、电路设计、调试技巧与实践经验,展现了纯硬件实现自动控制的独特魅力与挑战。 阅读详情

相关推荐

气象干旱触发水文(农业)干旱的概率及其触发阈值的动态变化-贝叶斯copula模型

本文通过建立不同类型干旱传播过程的触发阈值模型,解析了在不同等级气象干旱胁迫下诱发次一级干旱类型的触发阈值。通过贝叶斯概率模型,我们推导了气象干旱与水文干旱、农业干旱、地下水干旱之间的条件概率关系,进一步明确了气象干旱引发水文干旱、农业干旱和地下水干旱的概率及其触发阈值。该模型有效揭示了气象干旱对各级干旱类型的传播机制及其动态变化,为干旱预警系统的建立和水资源管理提供了理论依据和技术支持。

frankgis的博客 2503

【Java问题集】Caused by: java.security.AccessControlException: access denied

今天在配置Java的测试环境时遇到了下面的错误。一下部分省略通过查看网络中的文章和JavaDoc文档,总结了解决方法。

砥砺前行 1702

Rclone替代RaiDrive?零广告免费挂载Alist WebDAV到Windows资源管理器(含自启脚本)

本文详细介绍了如何使用开源工具Rclone替代RaiDrive,实现零广告、全免费的Alist WebDAV挂载方案。通过深入解析配置参数、提供完整的自启动解决方案和解决常见问题,帮助用户在Windows资源管理器中高效管理云存储,提升使用体验。

weixin_33709364的博客 638

JAVA访问权限控制(JAVA Access Control)

概述背景问题(动机、需求) 访问控制(或隐藏具体实现)与“最初实现并不恰当”有关。 —— 摘自JAVA编程思想 1. 代码会被重构。最初实现的代码并不是最好的(可维护性角度考虑)。 2. 消费者(客户端程序员)需要代码在某些方面不变。内在实现可变,但是接口调用方式不变,即不破坏消费者的代码。 要解决以上办法,就得知道哪些接口,哪些域已经被消费者使用。解决办法使用权限控制。正文理论知识

u014133299的博客 3738

用Multisim仿真一个9V供电的双工对讲机:从电桥原理到LM1875功放调试全记录

本文详细介绍了使用Multisim仿真9V供电的双工对讲机全过程,涵盖电桥原理、NE5532前置放大设计、LM1875功放调试及双工通信实现。通过实战案例解析,帮助读者掌握模拟电路设计与调试技巧,提升电子工程实践能力。

weixin_28678831的博客 115

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

Java access control

Java中有4个访问级别(不同于C或者C++的3个)。但规则同样适用。如果能访问高级别,那么一定能够访问到较低级别的数据。如,如果能访问到package级别的数据,那么肯定能访问到protect级别的。在Java中,访问级别如下: private > package > protect > public 更加具体的介绍,如下: [table] |访问控制符|同类|同包子类|同包其它类|...

245

【开源电机驱动】位置环控制

这是三闭环里的最后一个:位置闭环控制。如果你认真的阅读并推导了前章节,那么这一节将会很好理解。一如既往,我会使用简练的语言来描述复杂的问题。本章节主要涉及位置环的一些概念,以及控制框图。文章不会涉及具体的代码。

BadBoyHolly的博客 6097

access control java_Java安全之Access control

相信大家都有看到过类似下面的代码,特别是在读一些比较底层代码时。SecurityManager sm = System.getSecurityManager();if(sm != null){sm.checkRead(name)}// FileInputStream.java这段代码是什么意思呢?老实说,很长一段时间我也是似懂非懂,毕竟用的也不多。包括看了《深入理解JVM》里的介绍,也没有明白。后...

weixin_39789979的博客 302

FPGA设计-Vivado的Off-Chip Termination设置问题

经常遇到在FPGA设计时,很多人很迷惑这些关于硬件的终端匹配怎么设置,Vivado的Off-Chip Termination设置问题,这里就详细说一下这个问题。

whm128的博客 2727

GEE训练教程:如何批量从Google assets中将时序影像批量导出到Google drive

本文介绍了一种使用Google Earth Engine(GEE)批量导出2000-2023年叶绿素a(Chl-a)浓度数据的方法。通过JavaScript代码自动生成多个年份的导出任务,将数据保存至Google Drive指定文件夹。文章详细说明了代码参数配置、使用步骤和注意事项,包括资产命名规则验证、导出任务启动方式,以及分辨率、区域范围等关键参数的调整建议。同时提供了常见问题的解决方案,如处理缺失年份数据、解决导出像素超限等问题。该方法可显著提高多年份Chl-a数据批量导出的效率,适用于水体环境研究的

此星光明博客 91

access control java_java access control 访问控制

访问控制在OOP中,尤其是封装的时候很重要,这些修饰符能够控制哪里属性方法能够被哪些类访问,还能保证哪些属性方法不让哪些类访问,保证数据不轻易被非法破坏,java主要使用public,protected,private以及默认值这四个修饰符来控制。1 类的访问控制这种比较简单,一般两种:public和默认不带修饰符的两种情况1.1 public 类这种类是共有的,可以被所有其他的类访问到;如果访问...

weixin_42517044的博客 598

基于综合阻抗特征的配电架空线路单相断线故障区段定位研究

本文提出了一种基于综合阻抗特征的配电架空线路单相断线故障区段定位方法。通过分析故障后正序、负序阻抗变化,构造综合阻抗判据实现精准定位。仿真结果表明:该方法能有效识别故障区段,差异度判据显著(故障区段达0.508,非故障区段<0.016);对过渡电阻(1-200Ω)和负荷变化具有强鲁棒性,定位准确率不受影响。相比传统方法,综合阻抗法放大了断线故障特征,解决了弱故障信号检测难题,为配电网安全运行提供了可靠的技术手段。

AI的内部世界的博客 81

Controlling Access to Members of a Class

Access control的目的是什么? Access control is often referred to as implementation hiding. Wrapping data and methods within classes in combination with implementation hiding is often called encapsulation.

我的学习成长日记 1190

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java Access Control

      Modifier same class same package  Subclass Global private Yes       default Yes Yes     protected Y...

《Java之深夜未眠》 168

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

通过AccessController看Java安全模型

作为一种诞生于互联网兴起时代的语言,Java 从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的 Java 程序是安全的,如何对 Java 程序访问本地资源权限进行有限授权,这些安全角度的考虑一开始就影响到 Java 语言的设计与实现。可以说 Java 在这些方面的探索与经验,对后来的一些语言与产品都带来了积极影响。 Java 中的安全模型 在 Java 中将执行程序分成本地和

键圣的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java设置Access-Control-Allow-Origin允许多域名访问

     对于前后端分离的项目难免会遇到跨域的问题,在设置跨域的问题中有许多需要注意的事情,如本次将要将的设置Access-Control-Allow-Origin使其允许多域名请求。      (1)设置允许多域名访问最简单的方法是使用通配符,但是这种方式允许所有域名都可以访问,并不安全,而且这种方式浏览器不能携带cookie信息(携带cookie信息只能使用真实域名,如下面第二中方式)。这种...

xsh的博客 1万+

Access Control(Thinking in Java)

The levels of access control from “most access” to “least access” are public, protected, package access (which has no keyword), and private. 转载于:https://www.cnblogs.com/zhtf2014/archive/2010/01/18/165...

weixin_30764137的博客 221

Java之AccessController安全模型

目录一、JDK的安全模型1.1 JDK1.0 安全模型1.2 JDK1.1 安全模型1.3 JDK 1.2 安全模型1.4 最新安全模型二、AccessController2.1 方法摘要 作为一种诞生于互联网兴起时代的语言,Java从一开始就带有安全上的考虑,如何保证通过互联网下载到本地的Java程序是安全的,如何对Java程序访问本地资源权限进行有限授权,这些安全角度的考虑一开始就影响到Java语言的设计与实现。可以说Java在这些方面的探索与经验,对后来的一些语言与产品都带来了积极影响。 一、JDK的

we.think 1047

Java 进阶面试问题列表

Java 进阶面试问题列表翻译自Java developer interview questions: The hard part,从属于笔者的Java入门与工程实践系列。最近公司打算招几个 Java 开发人员,正巧在 Reddit 上看到了该文,顺手翻译了一波。只是单纯的问题列表,可能较水,慎进。 面向对象编程的基本理念与核心设计思想...

weixin_34128534的博客 379

访问控制修饰符(access modifiers)

找了一个访问控制修饰符的图 

zenolee的专栏 751

Java描述符(修饰符)的类型

以下内容引用自http://wiki.jikexueyuan.com/project/java/modifier-types.html: 描述符(修饰符)是添加到那些定义中来改变他们的意思的关键词。Java语言有很多描述符,包括以下这些: 可访问描述符 不可访问描述符 应用描述符,可以在类、方法、变量中加入相应关键字。描述符要先于声明,如下面的例子所示: publi...

angou6476的博客 285

Java中访问控制修饰符的详解和示例——Java学习

Java中访问控制修饰符的作用范围详解和示例——Java学习 1. public —— 对外部完全可见 2. protected —— 对本包和所有子类可见 3. 默认(不需要修饰符)—— 对本包可见 4. private —— 仅对本类可见

通用代码技术 627

JNI内存泄露处理方法汇总

在c++中new的对象,如果不返回java,必须用release掉,否则内存泄露。包括NewStringUTF,NewObject。如果返回java不必release,java会自己回收。 jstring jstr = env->NewStringUTF((*p).sess_id); ... env->DeleteLocalRef( jstr); jobject jobj = env->

Bloodwolf的专栏 1万+

JavaSE基础知识(十六)--Java的访问权限控制关键字(public、protected、private)

Java SE 是什么,包括哪些内容(十六)? 本文内容参考自Java8标准 1、Java访问权限修饰词(关键字) Java中总共有三个访问权限修饰词:public、protected、private,但是却有四种访问权限。 因为如果不提供任何访问权限修饰词,那么就意味着,它是"包访问权限",因此无论如何,所有事物都具有某种形式的访问权限控制,在以下的内容中,我将介绍各种类型的访问权限。 ⑴、包访...

ruidianbaihuo的博客 1620
上一篇: BitTorrent协议规范(BitTorrent Protocol Specification)系列之元信息文件结构(Metainfo File Structure)-第二部分
下一篇: BitTorrent协议规范(BitTorrent Protocol Specification)之Tracker HTTP/HTTPS Protocol-第三部分
wangpingfang
博客等级 码龄19年 63粉丝 18原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值