java - 在 Java 中通过对象引用访问静态变量

标签 java scope static

为什么我们可以通过 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/

相关文章:

java - Selenium:在 Java 中使用 cssSelector 提取 div 的文本

java - 如何将 bootstrap 框架包含在 netbeans Web 应用程序项目中?

java - Spring "session"bean 范围

javascript - 在 for 循环中使用 onclick 事件时如何解决范围问题

java - 无法从静态主函数内部调用非静态构造函数

java - Java 中的 static 关键字本身

Java 8 lambda 表达式 : Summing up method return values in a for each call for List/Set and Iterable

Java Runtime.exec() 不从命令行发送电子邮件

c++ - 如何在范围内声明?

C++静态 bool 变量