gpt4 book ai didi

访问私有(private)变量的 Java 静态方法

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

我的印象是私有(private)非静态变量只能通过在变量所在的对象上调用的方法访问,但事实并非如此。有人可以解释为什么以下编译和运行背后的原因吗?

public class Sandbox {
private String _privateString = "unmodified";
public static void setPrivateString(String str, Sandbox s) {
s._privateString = str;
}
public String toString()
{
return _privateString;
}

public static void main(String[] args) {
Sandbox s = new Sandbox();
setPrivateString("modified", s);
System.out.println(s);
}
}

输出:

modified

编辑:在 C# 中也是如此。

最佳答案

类 A 的私有(private)成员变量可以通过类 A 的任何方法(静态或非静态)访问(即读取/写入),因此在您的示例中,由于方法改变了string 是成员所属的同一类的方法,它被授予访问变量的权限。

原因是因为一个类被认为是一个自包含的逻辑体(即一个特定的实现),所以将隐私包含在一个类中是有道理的;没有理由从该访问权限中排除静态方法,因为它们也是该类提供的特定实现的一部分。

关于访问私有(private)变量的 Java 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5129107/

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