我写了这个测试代码:
class MyProgram
{
int count = 0;
public static void main(String[] args)
{
System.out.println(count);
}
}
但它给出了以下错误:
Main.java:6: error: non-static variable count cannot be referenced from a static context
System.out.println(count);
^
如何让我的方法识别我的类变量?
原文由 Greg 发布,翻译遵循 CC BY-SA 4.0 许可协议
您必须了解类和该类的实例之间的区别。如果您在街上看到一辆车,即使您看不到是哪种型号或类型,您也会立即知道这是一辆汽车。这是因为你将你看到的与“汽车” 类 进行了比较。该类包含与所有汽车相似的类。将其视为模板或想法。
同时,您看到的汽车是“汽车”类的一个实例,因为它具有您期望的所有属性:有人驾驶它,它有引擎、车轮。
所以类说“所有的车都有颜色”,实例说“这辆特定的车是红色的”。
在 OO 世界中,您定义了类,并在类内部定义了一个类型为
Color
的字段。当类被实例化时(当你创建一个特定的实例时),内存是为颜色保留的,你可以给这个特定的实例一种颜色。由于这些属性是特定的,因此它们是非静态的。静态字段和方法与所有实例共享。它们用于特定于类而不是特定实例的值。对于方法,这通常是全局辅助方法(如
Integer.parseInt()
)。对于字段,它通常是常量(如汽车类型,即您拥有有限集合且不经常更改的东西)。要解决您的问题,您需要实例化您的类的一个实例(创建一个对象),以便运行时可以为该实例保留内存(否则,不同的实例会相互覆盖您不想要的)。
在您的情况下,尝试将此代码作为起点:
新的
main()
方法创建了它包含的类的一个实例(听起来很奇怪,但是因为main()
是用类而不是用实例创建的,它可以这样做)然后调用一个实例方法(run()
)。