gpt4 book ai didi

java - 除了更好的可读性之外,还有其他访问修饰符吗?

转载 作者:行者123 更新时间:2023-12-02 07:55:04 26 4
gpt4 key购买 nike

我的意思是,如果我在 Java 中声明任何访问修饰符,则可以绕过该修饰符(包私有(private)和 protected - 包注入(inject);任何 - 反射)。我知道声明这些东西有助于理解和组织代码,但除此之外,还有什么技术原因或固有的 Java 功能吗?

谢谢你们的精彩回复。我唯一遗憾的是我只能将一个答案标记为已接受。

最佳答案

是的,它们可以被规避。您指出的依赖注入(inject)示例实际上是一个有用的规避案例。注入(inject)私有(private)成员不会污染接口(interface),并且在运行时不容易混淆。然而,要看到核心优势,请将其想象为您是一名软件架构师,领导着一个非常懒惰或缺乏经验的团队。

请记住,精心设计的对象应该具有高内聚性和松耦合性。高内聚意味着一个对象处理它在语义上应该处理的问题,仅此而已。松耦合意味着对象依赖于接口(interface)而不是特定的实现。请记住,这样做的好处是它使您的代码更易于阅读、理解、测试和更改。这降低了成本,总体上让利益相关者感到高兴。作为一名建筑师,这就是你所关心的。假设的懒惰/缺乏经验的团队只关心立即完成队列中的任何任务,即使以牺牲质量和 future 的生产力为代价。

访问修饰符显示了为对象定义的接口(interface)背后的一些意图。一般来说,如果您正在编写精心设计的代码,那么您几乎总是只需要公共(public)和私有(private)修饰符。在极少数情况下,关注点无法轻松/清晰地分离为单个内聚对象,还有“protected”关键字,它允许从逻辑上共享相关关注点的对象进行有限的外部访问。

表达界面背后意图的更好但可能更麻烦的方式是 design by contract ,它使用一组更强大的接口(interface)注释,以便允许预处理工具强制执行接口(interface)规则。

tl;博士:

编译器对访问修饰符的执行非常出色。编译器为那些愿意减少内聚性并增加代码库的耦合以更快地完成当前任务的人设置了一个相当好的不便障碍。

关于java - 除了更好的可读性之外,还有其他访问修饰符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com