为什么我们可以通过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
}
}
通常,每个人都可以访问公共变量,并且只能从该类的当前实例内部访问私有变量。在您的示例中,您被允许x
从main
方法中访问变量,因为该方法在Static类内。
如果您想知道为什么为什么要允许您从静态类的另一个实例(而不是当前实例)访问它(通常不允许使用私有变量),这仅仅是因为静态变量不存在于静态类中。每个实例,但每个班级。这意味着可以从
A的 所有实例访问 A 的相同静态变量。 __
如果不是这种情况,则根本没有人可以访问私有静态变量,因为它不属于 一个 实例,而是所有实例。
问题内容: 我指着一些窍门,发现了这一点。在以下代码中: 对象是。为什么这段代码没有抛出? 我知道这不是访问变量的正确方法,但问题在于。 问题答案: 如果要使用以下方法反汇编您的班级文件,请向当前答案中添加一些其他信息: 你会得到: 在这里,您可以看到该指令在第7行完成了对静态字段的访问。每当通过代码访问静态字段时,都会在程序文件中生成相应的指令。 指令具有特殊性,即它们不需要在调用它们之前就对要
问题内容: 我是面向对象编码的新手,但遇到以下问题。 (请注意,此解决方案是我的问题的一部分) 我需要许多对象可以引用的变量,但要为每个对象保留一些“私有”信息。更具体地说,我创建了一个名为的类,并且希望该类的每个对象都具有type的唯一ID 。因此,第一个对象具有,第二个对象等…请注意,我不只是想要一个随机整数,而我需要从0开始计数并递增… 在类中声明和初始化变量 我试图通过在构造函数主体中添加
问题内容: 通常,在面向对象的范例中,静态方法只能访问静态变量和静态方法。如果是这样,那么就会出现一个明显的问题,即Java中的main()方法如何才能访问非静态成员(变量或方法),即使它特别是公共静态void … !!! 问题答案: main方法也无权访问非静态成员。
如何从多个线程同时访问静态变量。 如果我有这样的课 我需要访问线程1的值,比如 从线程2中,我需要设置如下值 这会导致内存冲突吗?。如果是,建议使用什么方法来处理这种情况?。
问题内容: 在Java中,创建了静态方法来访问它而没有任何对象实例。这对我来说很有意义。但是最近我碰到一个奇怪的事情,Java中的静态方法也可以通过其对象实例进行访问。这对我来说似乎很奇怪。你们谁知道 Java 为什么提供此功能?允许在没有实例的情况下访问静态方法有什么意义? 问题答案: 这样做的好处是,它允许您采用实例方法并将其转换为静态方法,而无需修改任何现有代码(除 类之外),从而实现向后兼
我正在尝试使用动态名称访问对象的属性。这可能吗?