为什么我们可以通过 Java 中的对象引用来访问静态变量,如下面的代码?
public class Static {
private static String x = "Static variable";
public String getX() {
return this.x; // Case #1
}
public static void main(String[] args) {
Static member = new Static();
System.out.println(member.x); // Case #2
}
}
最佳答案
一般来说,公共(public)变量可以被任何人访问,而私有(private)变量只能从类的当前实例中访问。在您的示例中,您可以从 main
方法访问 x
变量,因为该方法在 Static 类中。
如果你想知道为什么你被允许从静态类的另一个实例而不是你当前所在的实例访问它(私有(private)变量通常不允许),这只是因为静态变量不允许存在于每个实例的基础上,但在每个类的基础上。这意味着可以从 A 的所有实例访问 A 的同一个静态变量。
如果不是这种情况,则根本没有人能够访问私有(private)静态变量,因为它不属于一个实例,而是属于所有实例。
关于java - 在 Java 中通过对象引用访问静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765445/