You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现CorporateService的CorporateServiceImpl类应选用何种访问修饰符?

关于CorporateServiceImpl类的访问修饰符选择

首先要明确一个Java语法规则:顶级类(非内部类)不能使用protected修饰,这会导致编译错误,所以你的这个想法本身是不可行的。

回到你的场景:已知该实现类绝不会在包外被使用,且通过接口调用其方法,正确的选择是使用默认访问修饰符(也就是不写任何修饰符),理由如下:

  • 遵循最小权限原则:默认修饰符的类仅对同包内的类可见,完全符合“绝不会在包外使用”的要求,避免了不必要的暴露
  • 满足包内使用需求:同包内的其他类可以正常访问和使用这个实现类
  • 契合面向接口编程的设计:包外代码只需要依赖CorporateService接口即可,无需知晓具体实现类的存在,降低了耦合度

如果误用public修饰,会导致这个本应被隐藏的实现类对所有包可见,违反了你的设计初衷,也增加了不必要的维护风险。

内容的提问来源于stack exchange,提问作者Rejaul Karim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:34:57