gpt4 book ai didi

java - 什么是类的客户

转载 作者:太空狗 更新时间:2023-10-29 22:43:10 24 4
gpt4 key购买 nike

我一直认为一个类的客户端是使用引用来访问该类的实例字段/方法的客户端,即另一个类(从它自己的方法)。但是当我想到一些细节时,有些事情我想不通。

在 Java 中,我知道有几个地方可以放置操作语句。

  • 方法内部(实例/静态)
  • 内联初始化(当你声明一个实例变量时私有(private)整数 x = 5;)
  • 静态 block

也许还有更多我不知道或不记得的。

问题的第一部分是,如果他们属于另一个类(class),是否所有这些都被视为客户?当他们在同一个类(class)时,他们还可以访问私有(private)资料吗?

第二部分是:当 JVM 调用方法(如 main 和 finalize)时,它们是否也被视为客户端? (调用不是来自一个类?)

编辑:客户端能否只访问公共(public)方法和变量?如果它访问包字段(如果在同一个包中),我们不能称它为客户端吗?

最佳答案

在深入研究 Java 之前 - 让我们尝试将情况映射到物理世界场景。

您去糕点店点了一份糕点。你从商店买糕点付钱然后离开。您自然地称自己为商店的客户。那么我们从中了解到了什么?

术语客户 指的是从另一个实体请求服务的任何实体。客户不关心提供服务的实体实际上如何提供服务 - 只要服务可用并满足其用例,客户就会很高兴。

因此,当类中的方法M1 调用另一个方法M2 时,M1M2 的客户端>。类似地,当类 C1 请求 C2 的服务时,C1 是 C2 的客户端。

关于您关于 ma​​in()finalize() 以及与 JVM 交互的问题 - 您可以将 JVM 的类加载器视为您的客户端类,因为它加载 JVM 类加载器将加载您的类,然后请求 main 方法开始执行并继续进一步处理。根据 OP 的评论进行编辑 - finalize() 方法由 JVM 中的垃圾收集器使用一些内部 JVM 技巧访问。作为一般规则,任何普通应用程序都不会执行此类欺骗行为。

关于java - 什么是类的客户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30512953/

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